Доброе время суток
Делаю для внутренних страниц меню текстовые блоки для заполнения
Вот xml
<page id="279" parentId="275" link="/napravleniya/obshcheklinicheskie-napravleniya/akusherstvo/" is-visible="1" is-active="1" object-id="1299" type-id="152" update-time="1456317193" alt-name="akusherstvo">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Акушерство</name>
<properties>
<group id="430" name="common">
<title>Общее</title>
<property id="3" name="h1" type="string" is-important="0">
<title>Поле h1</title>
<value>Акушерство</value>
</property>
</group>
<group id="432" name="more_params">
<title>Дополнительные параметры</title>
<property id="12" name="show_submenu" type="boolean" is-important="0">
<title>Показывать подменю</title>
<value>1</value>
</property>
</group>
<group id="436" name="opisanie_naprpavleniya">
<title>описание напрпавления</title>
<property id="514" name="vidimoe_pole_teksta" type="text" is-important="0">
<title>Видимое поле текста</title>
<value>Тест 1</value>
</property>
<property id="515" name="skrytoe_pole_teksta" type="text" is-important="0">
<title>Скрытое поле текста</title>
<value>Тест 1</value>
</property>
<property id="516" name="chem_zanimayutsya" type="text" is-important="0">
<title>Чем занимаются</title>
<value>Тест 1</value>
</property>
<property id="517" name="spisok_uslug" type="text" is-important="0">
<title>Список услуг</title>
<value>Тест 1</value>
</property>
<property id="518" name="stoimost_uslug" type="text" is-important="0">
<title>Стоимость услуг</title>
<value>Тест 1</value>
</property>
</group>
</properties>
</page>
т.е. для страниц в разделе меню с id275 была определенная структура заполнения, вот мой xsl, но он не подцепляет Тестовый текст вбитый в поле, а берет только текст из основного контента.
Что не так по запросу у меня?((
<xsl:template match="result[page/@id = '275']">
<div id="content" class="content-select">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</div>
</xsl:template>
<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
</xsl:template>
<xsl:template match="page" mode="line">
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
<xsl:value-of select="//property[@name='vidimoe_pole_teksta']/value" disable-output-escaping="yes" />
<section class="accordionContent">
<xsl:value-of select="//property[@name='skrytoe_pole_teksta']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
</div>
</div>
</xsl:template>
Не сильно изменила, для конкретной страницы подключение идет, а для страниц относящихся к определенному типу данных привязка не идет, может не так пишу условие?
Да и проблема, указываю проперти и предикат, но данные не выдает...
<xsl:template match="result[page/@id = '279']">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</xsl:template>
<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
</xsl:template>
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
<xsl:value-of select="//property[@name='vidimoe_pole_teksta']/value" disable-output-escaping="yes" />
<section class="accordionContent">
<xsl:value-of select="//property[@name='skrytoe_pole_teksta']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
<xsl:value-of select="property[@name='chem_zanimayutsya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
<xsl:value-of select="property[@name='spisok_uslug']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
1231223
</div>
</div>
</div>
</xsl:template>
Блин, а прописываю к стандартному content, он выводит внесенный текст (( а с другим именем нет
<section class="block-text">
<xsl:value-of select="//property[@name = 'content']/value"/>
</section>
УРА!
Добавила поля в usel и вызов произошел.
Но вот помоги очень надо Т_Т
Как сделать шаблон для определенного типа данных, в частности тип 152
HELP!
Если что вот мой xml
<selection>
<target result="pages">
<type id="{2}"/>
<category depth="1">{1}</category>
</target>
<extended>
<groups>kontakty</groups>
<properties>h1, content, header_pic, menu_pic_a, photo, descr, vidimoepole, skrytoepole, zanayutiya, uslugi, priceuslug</properties>
</extended>
<limit page="{3}">{4}</limit>
</selection>
HELP Т_Т Очень-очень ><
151 - это id типа данных страницы, внутри которых находятся данные с id 152 (тип данных) Получается структура
-151
--152
--152
--152
и т.д.
Вот мой запрос, он опять теперь стандартно отображает текст из основного блока.
<xsl:template match="page[@type-id = '151']">
<xsl:apply-templates select="document('usel://main/152/')/udata" mode="line"/>
</xsl:template>
<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
</xsl:template>
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select="//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select="//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select="//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select="//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Вторая страница</p>
</div>
</div>
</div>
</xsl:template>
Если дело в xml, то не знаю как его даже изменить (xml кидала выше)
Пока получилось вот таким запросом сделать привязку к одной только странице ((
<xsl:template match="result[page/@id = '279']">
<xsl:apply-templates select="document('usel://main/275/152')/udata" mode="line"/>
</xsl:template>
Пропустил порядком моментов в вашем саморазвитии)
Вижу, что вы разобрались с тем, как получать дополнительные поля при usel вызове списка страниц.
У вас остался вопрос о том как выводить ваши текстовые блоки именно для той страницы которую вы обрабатываете.
Для этого в шаблоне
<xsl:template match="page" mode="line">
....
</xsl:template>
у всех xpath запросов к полям, вместо
//property[@name='vidimoe_pole_teksta']/value
делаем запросы вида
.//property[@name='vidimoe_pole_teksta']/value
добавив точку в начале запроса (относиться ко всем запросам), вы как бы указываете, что поиск идет не по всему xml документу, а только внутри текущей ветке (то есть, внутри текущего page)
P.S. если я правильно понял ваш вопрос.
тут все проще
<xsl:template match="result[page/@type-id = '151']">
...шаблон для страниц типа данных 151...
</xsl:template>
Эмм.. я правильно сделала? А то не работает...
Просто где теперь прописывать обращение к именам полей или путь где поля находятся?
Так:
<xsl:template match="result[page/@type-id = '151']">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>
Или так:
<xsl:template match="result[page/@type-id = '151']">
<xsl:apply-templates select="document('usel://main/151/')/udata" mode="line"/>
</xsl:template>
<xsl:template match="udata" mode="line">
<xsl:apply-templates select="page" mode="line"/>
</xsl:template>
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>
если ваша задача звучит так: "Для страниц с типом данных 151, вывести результат usel запроса", то подойдет второй вариант.
Но не понятно, почему у вас в usel запросы такие параметры
<xsl:apply-templates select="document('usel://main/151/')/udata" mode="line"/>
ведь первый параметр это id раздела, а у вас там 151, что больше похоже на type-id.
id 151 - это тип данных раздела, где находятся созданные страницы
id 152 - это тип данных страницы, для них нужен определенный шаблон запроса/вида страницы
У типа данных назначение типа стоит страница контента (вдруг важно)
т.е. в страницы с типом данных id152 должен подключатся вот такой шаблон с определенными полями value
(mode или match могут быть изменены, пишу без всех result и usel, чтобы не путаться)
<xsl:template match="page" mode="line">
<div class="block-reviews">
<ul id="tabs">
<li><a title="tab1-reviews" href="#">Услуги</a></li>
<li><a title="tab2-reviews" href="#">Статьи</a></li>
</ul>
<div id="content" class="content-select">
<div id="tab1-reviews">
<section class="block-text">
1
<xsl:value-of select=".//property[@name = 'vidimoepole']/value" disable-output-escaping="yes" />
<section class="accordionContent">
2
<xsl:value-of select=".//property[@name = 'skrytoepole']/value" disable-output-escaping="yes" />
</section>
<section class="more accordionButton">читать полностью</section>
</section>
<section class="block-text">
3
<xsl:value-of select=".//property[@name = 'zanayutiya']/value" disable-output-escaping="yes" />
</section>
<section class="block-text">
4
<xsl:value-of select=".//property[@name = 'uslugi']/value" disable-output-escaping="yes" />
</section>
</div>
<div id="tab2-reviews">
<p>Тест</p>
</div>
</div>
</div>
</xsl:template>
По теме разобралась почему не выводились value, как оказалось надо было прописать в usel нужные поля, а так как я с usel не работала ни разу, первый раз увидела в umi, поэтому долго доходило с полями...
Но проблема оказалась для меня сложнее ((
Простите, я не поняла как, но первый вариант, неожиданно взял и заработал О_О
Реально не знаю как....
Где просто идет обращение к типу....
<xsl:template match="result[page/@type-id = '152']">
Спасибо вам большое ^____^!