Подумала я, и решила все-таки для этого вопроса создать новую тему.
Есть подозрение, что ошибка идет в usel запросе.
У меня есть в наличии страницы контента:
- Направления с типом данных 152, так же он доступен как справочник.
- Специалисты с типом данных 148, в котором есть поле Ссылка на дерево, которое соответственно выбраны Направления.
Задача: Надо выводить по два Специалиста в правой колонке на страницах с Направлением само по себе это не сложно. Но Специалисты должны соответствовать своему Направлению.
В итоге я вроде сделала usel запрос:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target expected-result="pages">
<type module="content" method="page" />
<type id="148"/>
</target>
<property name="napravlenie">
<object>152</object>
</property>
<extended>
<properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, napravlenie, css_class, kratkaya_dolzhnost</properties>
</extended>
<limit page="0">2</limit>
</selection>
При проверке usel вызвав его через адресную строчку, теперь выдает мне 0...
И обращение должно быть такое:
<xsl:apply-templates select="document('usel://right_main')/udata/page" mode="rightcol_specialisty" />
Оу... проверила нельзя получает...
Вот xml этого поля:
<property id="547" name="napravlenie" type="symlink" is-important="0">
<title>Направление</title>
<value>
<page id="320" parentId="275" link="/napravleniya/obshchie-napravleniya/test1/" is-visible="1" is-active="1" object-id="1341" type-id="152" update-time="1456734656" alt-name="test1" xlink:href="upage://320">
<basetype id="30" module="content">Страницы контента</basetype>
<name>test1</name>
</page>
</value>
</property>
я ориентировалась по этому описанию..
http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/#sel=127:1,127:2
Просто я так поняла page это для id страницы, а object грубо говоря надо использовать для типа данных.
Но если следовать данной структуре, я тогда не знаю какой параметр должен быть в page, я пробовала поставить туда id типа данных. Но и он соответственно выдает 0
А через линк... это получается каждую страницу вписывать? @_@
P.S: еще чувство, будто я данные местами путаю..
Опять ноль
<udata module="usel" method="right_main" generation-time="0.014157">
<total>0</total>
</udata>
вывод в шаблон:
<xsl:apply-templates select="document('usel://right_main')/udata/page" mode="rightcol_specialisty" />
До появление проблемы с привязкой к направлениям, а просто вывод двух Специалистов рандомно в правой колонке был такой.
Шаблон:
<xsl:choose>
<xsl:when test="result/page/@type-id='152'">
<xsl:apply-templates select="result" mode="rightcol_specialisty" />
</xsl:when>
<xsl:when test="result/page/@type-id='172'">
<xsl:apply-templates select="result" mode="rightcol_specialisty" />
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
Запрос:
<xsl:template match="result" mode="rightcol_specialisty">
<ul>
<xsl:apply-templates select="document('usel://right_main/272/148')" mode="human"/>
</ul>
</xsl:template>
<xsl:template match="udata" mode="human">
<xsl:apply-templates select="page" mode="human"/>
</xsl:template>
<xsl:template match="page" mode="human">
<li class="info_bg">
<a href="{@link}">
<span class="text">
<img src="{extended/properties/property[@name='fotografiya']/value}" alt="" />
<big>
<xsl:value-of select="extended/properties/property[@name = 'familiya']/value"/><br/>
<i><xsl:value-of select="extended/properties/property[@name = 'imya_otchestvo']/value"/></i>
</big>
<small><xsl:value-of select="extended/properties/property[@name = 'kratkaya_dolzhnost']/value" disable-output-escaping="yes"/></small>
</span>
</a>
<a href="#win1" class="apply">записаться</a>
</li>
</xsl:template>
xml:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target expected-result="pages">
<type id="148"/>
<type module="content" method="page" />
<category>{1}</category>
</target>
<extended>
<properties>fotografiya, familiya, imya_otchestvo, kratkaya_dolzhnost, napravlenie</properties>
</extended>
<sort>rand()</sort>
<limit page="0">2</limit>
</selection>
Я думала для точности надо указать, что у меня Контент страницы... Оба были правильными и вроде ограничений на type в описании не было ><
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type id="148" />
</target>
<property name="napravlenie" value="152"/>
<extended>
<properties>fotografiya, familiya, imya_otchestvo, kratkaya_dolzhnost, napravlenie</properties>
</extended>
<!-- <sort>rand()</sort>-->
<limit page="0">2</limit>
</selection>
Выдает:
<udata module="usel" method="right_main" generation-time="0.010586"><total>0</total></udata>
P.S: вопрос, а может для использования поля Ссылки на дерево, надо его в Направлении сделать, а не у Специалиста?
Ведь в правой колонке на странице Направления должны вывестись нужные Специалисты.
P.P.S.: хотя нет, логичней по первому варианту..
Собственно, рекомендую проверить есть ли страницы с type_id 148 и заполненным значением в поле napravlenie равным 152, а так же пока убрать вывод extended полей
Да есть, уже проверяла. Вот.
<property id="547" name="napravlenie" type="symlink" is-important="0">
<title>Направление</title>
<value>
<page id="320" parentId="275" link="/napravleniya/obshchie-napravleniya/test1/" is-visible="1" is-active="1" object-id="1341" type-id="152" update-time="1456734656" alt-name="test1" xlink:href="upage://320">
<basetype id="30" module="content">Страницы контента</basetype>
<name>test1</name>
</page>
</value>
</property>
P.S.: Не у всех Направлений есть Специалисты
Вот мне интересно, а почему самостоятельно в голову не приходит мысль, что тут нет id = 152, object_id = 152 и даже, на худой конец, parent_id = 152, а есть только type_id = 152. Может нужно задуматься о том, что что-то пошло не так?
т.е. вы хотите сказать, что можно прописывать вот так что ли <type type_id="148" /> !? О.о
Просто про это о Usel ничего не написано...
А других познаний у меня в usel как-то нету и писала свой usel я по статье у umi что лежит -_-
У меня есть Специалисты с типом данных 148, у них есть поле Ссылка на дерево napravlenie.
На страницах Направлений в правой колонке надо вывести 2 Специалиста относящихся к этому Направлению.
Поэтому обратилась к типу данных Специалистов с проверкой(грубо говоря) того что у них есть поле Ссылка на дерево napravlenie.
И делаю вывод в шаблон:
<xsl:apply-templates select="document(concat('usel://right_main/', /result/page/@id))" mode="rightcol_specialisty" />
С ним хотя бы выводит тот 0, который мне дает usel
Я с начала задумалась, что пошло что-то не так, поэтому и написала.
И кусочек xml со страницы с типом данных 148(т.е. Специалиста), который я скинула вам, скидывала еще в Ответ #2 : Сегодня в 12:43:02
К сожалению выводить
<udata module="usel" method="right_main" generation-time="0.010851">
<total>0</total>
</udata>
По сути у меня сейчас есть только usel
Есть Направление - тип данных 152
Есть Специалисты - тип данных 148
И по нему мне надо, чтобы на страницах с Направлениями, выводились в правой колонке два Специалиста этого Направления.
Я нашла, что это можно сделать создав поле Ссылка на дерево в типе данных для Специалиста.
Так появилось поле Ссылка на дерево с именем napravlenie.
В итоге на основе примера и после прочтения протоколов родился usel:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target result="pages">
<type id="148" />
</target>
<property name="napravlenie"/>
<!-- <sort>rand()</sort>-->
<limit page="0">2</limit>
</selection>
Ориентировалась я на эту статью, и проблема в том, что она идет на основе каталога, поэтому я решила написать дополнительно <type module="content" method="page" />, думала это важно будет в запросе... Немного не поняла для чего в примере указан <page>{1}</page>
Я находила еще пару тем, но в них не разбирался xml код :(
Еще мне кажется я местами перепутала расположение поля Ссылка на дерево...><
Добавление уже имеющихся объектов каталога в другие категории через дополнительное поле "ссылка на дерево" (http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D0%B6%D0%B5_%D0%B8%D0%BC%D0%B5%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B0_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5_%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5_%22%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_%D0%BD%D0%B0_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%22)
Просмотр xml страниц Специалистов показало, что поле есть.
<property id="547" name="napravlenie" type="symlink" is-important="0">
<title>Направление</title>
<value>
<page id="320" parentId="275" link="/napravleniya/obshchie-napravleniya/test1/" is-visible="1" is-active="1" object-id="1341" type-id="152" update-time="1456734656" alt-name="test1" xlink:href="upage://320">
<basetype id="30" module="content">Страницы контента</basetype>
<name>test1</name>
</page>
</value>
</property>
Но при вызове right_main в адресной строке получаю:
<udata module="usel" method="right_main" generation-time="0.016996"><total>0</total></udata>
P.S.: Просто вывести два специалиста в рандомном порядке на страницах направления у меня получилось.
usel запрос:
<?xml version="1.0" encoding="utf-8"?>
<selection>
<target expected-result="pages">
<type module="content" method="page" />
<type id="148"/>
</target>
<property name="napravlenie">
<object>152</object>
</property>
<extended>
<properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, napravlenie, css_class, kratkaya_dolzhnost</properties>
</extended>
<limit page="0">2</limit>
</selection>
При проверке usel вызвав его через адресную строчку, теперь выдает мне 0...
И вывожу так:
<xsl:apply-templates select="document('usel://right_main')/udata/page" mode="rightcol_specialisty" />
Это я писала в самом начале темы.
Вы сказали, что:
- <type module="content" method="page" />
- <object>152</object>
- <extended><properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, napravlenie, css_class, kratkaya_dolzhnost</properties></extended>
грубо говоря в данном случае не нужны.
И я их убрала.
Ничего нового не прибавилось вроде.
Так что ли? О.о
<выбор>
<цель результат="страница">
<тип идентификатор="148" />
</цель>
<свойство имя="направление"/>
<лимит страницв="0">2</лимит>
</выбор>
Совсем не так:
<?xml version="1.0" encoding="utf-8"?>
<!--выбрать-->
<selection>
<!--страницы-->
<target result="pages">
<!--с типом 148-->
<type id="148" />
</target>
<!--где значение свойства napravlenie -->
<property name="napravlenie">
<!--содержит ссылку на страницу с идентификатором 320-->
<page>320</page>
</property>
<!--в произвольном порядке-->
<sort>rand()</sort>
<!--начиная с нулевой страницы, но не более 2-х штук-->
<limit page="0">2</limit>
</selection>
Итого:
Выбрать страницы с типом 148, где значение свойства napravlenie содержит ссылку на страницу с идентификатором 320, в произвольном порядке начиная с нулевой страницы, но не более 2-х штук.
Это что, магия какая-то?
1. Usel
<selection>
<target result="pages">
<type id="148" />
</target>
<property name="napravlenie">
<page>{1}</page>
</property>
<extended>
<properties>fotografiya, familiya, imya_otchestvo, dolzhnost, kratkaya_dolzhnost, napravlenie, specialisty</properties>
</extended>
<sort>rand()</sort>
<limit page="0">2</limit>
</selection>
148 - это тип данных Специалистов у который есть поле napravlenie
Проверила usel http://сайт/right_main/id_направления
Все работает, появляются соответствующие Специалисты.
2) Вызвала этот usel через:
<xsl:apply-templates select="document(concat('usel://right_main/', /result/page/@id))" mode="rightcol_specialisty" />
Все работает, как надо.
Я кричал ура в надежде, что вы прочитали инструкцию и действовали по ней. Как видно, я ошибался и впереди у вас еще много граблей. Наслаждайтесь :-)
Я ее читала, просто поняла на наглядном примере, когда его нашла.
Возник вопрос, небольшой.
У меня в меню Направления всплывающее меню(3-ий ур) с подразделениями и там есть карусель со специалистами, все бы ничего, но тут прилетело, что там должна быть та же система...>< У всплывающего меню Специалисты в карусели должны относиться к Направлению.
Но если со страницы я поняла как обратиться к usel, но вот к item внутри меню как обратиться?
<item id="275" link="/napravleniya/kategoria1/" name="Категория1" alt-name="kategoria1" xlink:href="upage://275">
<items>
<item id="279" link="/napravleniya/kategoria1/napravleniya1/" name="Направление1" alt-name="napravleniya1" xlink:href="upage://279">Направление1</item>
<item id="321" link="/napravleniya/kategoria1/napravleniya2/" name="Направление2" alt-name="napravleniya2" xlink:href="upage://321">Направление2</item>
<item id="280" link="/napravleniya/kategoria1/napravleniya3/" name="Направление3" alt-name="napravleniya3" xlink:href="upage://280">Направление3</item>
</items>
Категория1
</item>
По link что ли?
И получается usel запрос остается такой же?
Тут получается не на странице ведь, так?
Получается внутри item должна быть карусель...
Вот xml кусочек меню:
<item id="275" link="/napravleniya/kategoria1/" name="Категория1" alt-name="kategoria1" xlink:href="upage://275">
<items>
<item id="279" link="/napravleniya/kategoria1/napravleniya1/" name="Направление1" alt-name="napravleniya1" xlink:href="upage://279">Направление1</item>
<item id="321" link="/napravleniya/kategoria1/napravleniya2/" name="Направление2" alt-name="napravleniya2" xlink:href="upage://321">Направление2</item>
<item id="280" link="/napravleniya/kategoria1/napravleniya3/" name="Направление3" alt-name="napravleniya3" xlink:href="upage://280">Направление3</item>
</items>
Категория1
</item>
/result/page/@id - выводит id текущей страницы, а как вывести id(?) текущего item?...
А на xlink:href можно ориентироваться?
хм.. контент меню..
Попробовала прописать так, сделала новый usel, просто убрала сортировку и лимит.
Сделала вот такой вызов и он выводит всех Специалистов.
<xsl:apply-templates select="document(concat('usel://carousel_main/', 'udata://content/menu/0/2/', @id))/udata" mode="carousel_specialisty" />
Но это просто обращение к id меню, так?
Надеюсь я правильно вас поняла.
Это код меню. Где выводится карусель стоит комментарий.
<xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="top_menu">
<xsl:apply-templates select="item" mode="top_menu"/>
</xsl:template>
<xsl:template match="udata[@module = 'menu']/item" mode="top_menu">
<!--выбираются изображения неактивных разделов страниц-->
<xsl:variable name="menu_bg" select="document(concat('upage://', @id, '.menu_pic_ua'))/udata/property/value" />
<xsl:variable name="menu_bg_style" select="concat('background-image: url(', $menu_bg, ');')" />
<li class="tab">
<!-- изображения неактивных разделов страниц вставляются как инлайн background-image -->
<xsl:attribute name="style">
<xsl:value-of select="$menu_bg_style" />
</xsl:attribute>
<!-- Ховер для tab-->
<div class="inner-hover"></div>
<span>
<xsl:value-of select="."/>
</span>
<xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="top_drop">
<xsl:with-param name="position" select="position()"/>
</xsl:apply-templates>
</li>
</xsl:template>
<xsl:template match="udata" mode="top_drop"/>
<xsl:template match="udata[items]" mode="top_drop">
<xsl:param name="position"/>
<div class="tab-content">
<div class="menu__wrap">
<xsl:if test="count(items/item) > 20">
<xsl:attribute name="class">menu__wrap menu__wrap--long-list</xsl:attribute>
</xsl:if>
<ul>
<xsl:apply-templates select="items/item" mode="top_drop"/>
</ul>
</div>
<xsl:if test="count(items/item) > 20">
<button class="btn-menu__show-more">Все отделения</button>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="item" mode="top_drop">
<li>
<xsl:choose>
<xsl:when test="position() = 20">
<xsl:attribute name="class">long-list-breaker</xsl:attribute>
</xsl:when>
<xsl:when test="items/item">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:when>
<xsl:when test="position() = 20 and items/item">
<xsl:attribute name="class">dropdown long-list-breaker</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:value-of select="link"/>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="top_drop3"/>
</li>
</xsl:template>
<xsl:template match="items" mode="top_drop3">
<span class="polygon"></span>
<div class="under_menu">
<div class="block-link">
<span><a href="/action" class="orange">Акции</a></span>
<span><a href="/price" class="blue">Цены</a></span>
</div>
<div class="block-info">
<div class="list-services">
<xsl:apply-templates select="item" mode="top_drop3"/>
</div>
<!-- здесь выводится карусель со Специалистами -->
<div class="carousel-container">
<xsl:apply-templates select="document(concat('usel://carousel_main/', 'upage://', @id))/udata" mode="carousel_specialisty" />
<!--<xsl:apply-templates select="document(concat('usel://carousel_main/', 'udata://content/menu/0/2/', @id))/udata" mode="carousel_specialisty" />--><!-- тестовый вариант вывода специалистов -->
<!--<xsl:apply-templates select="document(concat('usel://main/272/148', /result/page/@id))/udata" mode="carousel_specialisty" />--><!-- тестовый вариант вывода специалистов -->
<button class="prev"></button>
<button class="next"></button>
</div>
</div>
</div>
</xsl:template>
<xsl:template match="item" mode="top_drop3">
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
</xsl:template>
<!-- specialisty carousel -->
<xsl:template match="udata" mode="carousel_specialisty">
<ul class="carousel">
<xsl:apply-templates select="page" mode="carousel_human"/>
</ul>
</xsl:template>
<xsl:template match="page" mode="carousel_human">
<li><a href="{@link}" class="link_human">
<span class="text">
<img src="{extended/properties/property[@name='fotografiya']/value}" alt="" />
<big><xsl:value-of select="extended/properties/property[@name = 'familiya']/value"/></big>
<small><xsl:value-of select="extended/properties/property[@name = 'imya_otchestvo']/value"/></small>
</span></a>
<a href="#win1" class="apply">записаться</a>
</li>
</xsl:template>
кусочек xml меню
<udata module="content" method="menu" generation-time="0.069381">
<items>
<item id="330" link="/napravleniya/kategoria1/napravleniya1/" name="Направление1" alt-name="napravleniya1" xlink:href="upage://330">Направление1</item>
<item id="283" link="/napravleniya/kategoria1/napravleniya2/" name="Направление2" alt-name="napravleniya2" xlink:href="upage://283">
<items>
<item id="445" link="/napravleniya/kategoria1/napravleniya2/razdel1/" name="Раздел1" alt-name="razdel1" xlink:href="upage://445">Раздел1</item>
<item id="446" link="/napravleniya/kategoria1/napravleniya2/razdel2/" name="Раздел2" alt-name="razdel2" xlink:href="upage://446">Раздел2</item>
<item id="449" link="/napravleniya/kategoria1/napravleniya2/razdel3/" name="Раздел3" alt-name="razdel3" xlink:href="upage://449">Раздел3</item>
<item id="444" link="/napravleniya/kategoria1/napravleniya2/razdel4/" name="Раздел4" alt-name="razdel4" xlink:href="upage://444">Раздел4</item>
</items>
Направление2
</item>
</items>
<id>277</id>
</udata>
usel
<?xml version="1.0" encoding="utf-8"?>
<!--выбрать-->
<selection>
<target result="pages">
<type id="148" />
</target>
<property name="napravlenie">
<page>{1}</page>
</property>
<extended>
<properties>fotografiya, familiya, imya_otchestvo, dolzhnost, kratkaya_dolzhnost, napravlenie, specialisty</properties>
</extended>
</selection>
Пропишите в \templates\demodizzy\xslt\default.xsl
<xsl:variable name="result" select="/" />
И в своем шаблоне используйте это как:
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />
Ну или можно просто использовать $document-page-id и ничего не прописывать. Но нужно убедиться, что есть строка:
<xsl:variable name="document-page-id" select="/result/@pageId" />
вопрос, тут идет обращение к конкретному item в меню, так?
<xsl:template match="item[@id = '1000']" mode="menu">
<a href="{@link}">
<xsl:value-of select="."/>
</a>
</xsl:template>
Нельзя как-то это "адаптировать"? Это можно назвать принцип работы?
Понятно, что на конкретный. Ну ладно, сперва так. Главное чтобы сейчас я правильно поняла, что нужно @_@
У меня есть меню с Направлениями.
На всех страницах, кроме страницы контакты это меню отображается для пользователя.
При наведение курсора на Направление (top_drop) появляется плашка (top_drop3), в которой находятся разделы.
В этой же плашке находится карусель со Специалистами, отображение которых должны соответствовать Направлению.
При том не важно на какой странице пользователь находится (о компании или специалиста), когда он водит по меню, то он должен видеть в плашка у карусели Специалистов того Направления, на которое он навел курсор.
Вы дали совет, он сработал, но дал немного не тот результат, что нужно.
Но он идет грубо говоря от глобальной страницы, так?
- Если находишься на странице "о компании", в меню у Направления в блоке соответственно нету Специалистов в карусели.
- Если находишься на странице конкретного какого-то Направления, например Направление1, то в меню, если наведешь на Направление2 в блоке у карусели видишь Специалистов Направления1, а не Направления2.
Прописала в \templates\demodizzy\xslt\default.xsl
<xsl:variable name="result" select="/" />
А вот меню:
<xsl:template match="udata[@module = 'content'][@method = 'menu']" mode="top_menu">
<xsl:apply-templates select="item" mode="top_menu"/>
</xsl:template>
<xsl:template match="udata[@module = 'menu']/item" mode="top_menu">
<!--выбираются изображения неактивных разделов страниц-->
<xsl:variable name="menu_bg" select="document(concat('upage://', @id, '.menu_pic_ua'))/udata/property/value" />
<xsl:variable name="menu_bg_style" select="concat('background-image: url(', $menu_bg, ');')" />
<li class="tab">
<!-- изображения неактивных разделов страниц вставляются как инлайн background-image -->
<xsl:attribute name="style">
<xsl:value-of select="$menu_bg_style" />
</xsl:attribute>
<!-- Ховер для tab-->
<div class="inner-hover"></div>
<span>
<xsl:value-of select="."/>
</span>
<xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="top_drop">
<xsl:with-param name="position" select="position()"/>
</xsl:apply-templates>
</li>
</xsl:template>
<xsl:template match="udata" mode="top_drop"/>
<xsl:template match="udata[items]" mode="top_drop">
<xsl:param name="position"/>
<div class="tab-content">
<div class="menu__wrap">
<xsl:if test="count(items/item) > 20">
<xsl:attribute name="class">menu__wrap menu__wrap--long-list</xsl:attribute>
</xsl:if>
<ul>
<xsl:apply-templates select="items/item" mode="top_drop"/>
</ul>
</div>
<xsl:if test="count(items/item) > 20">
<button class="btn-menu__show-more">Все отделения</button>
</xsl:if>
</div>
</xsl:template>
<xsl:template match="item" mode="top_drop">
<li>
<xsl:choose>
<xsl:when test="position() = 20">
<xsl:attribute name="class">long-list-breaker</xsl:attribute>
</xsl:when>
<xsl:when test="items/item">
<xsl:attribute name="class">dropdown</xsl:attribute>
</xsl:when>
<xsl:when test="position() = 20 and items/item">
<xsl:attribute name="class">dropdown long-list-breaker</xsl:attribute>
</xsl:when>
</xsl:choose>
<xsl:value-of select="link"/>
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
<xsl:apply-templates select="items" mode="top_drop3"/>
</li>
</xsl:template>
<xsl:template match="items" mode="top_drop3">
<span class="polygon"></span>
<div class="under_menu">
<div class="block-link">
<span><a href="/action" class="orange">Акции</a></span>
<span><a href="/price" class="blue">Цены</a></span>
</div>
<div class="block-info">
<div class="list-services">
<xsl:apply-templates select="item" mode="top_drop3"/>
</div>
<!-- Карусель -->
<div class="carousel-container">
<!-- вызов запроса для специалистов -->
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />
<button class="prev"></button>
<button class="next"></button>
</div>
</div>
</div>
</xsl:template>
<xsl:template match="item" mode="top_drop3">
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
</xsl:template>
<!-- specialisty carousel -->
<xsl:template match="udata" mode="carousel_specialisty">
<ul class="carousel">
<xsl:apply-templates select="page" mode="carousel_human"/>
</ul>
</xsl:template>
<xsl:template match="page" mode="carousel_human">
<li><a href="{@link}" class="link_human">
<span class="text">
<img src="{extended/properties/property[@name='fotografiya']/value}" alt="" />
<big><xsl:value-of select="extended/properties/property[@name = 'familiya']/value"/></big>
<small><xsl:value-of select="extended/properties/property[@name = 'imya_otchestvo']/value"/></small>
</span></a>
<a href="#win1" class="apply">записаться</a>
</li>
</xsl:template>
Так выглядит "структура"
|Категория1
--Направление1
~~~Раздел1
~~~Раздел2
--Направление2
--Направление3
~~~Раздел1
~~~Раздел2
--Направление4
|Категория2
--Направление1
~~~Раздел1
~~~Раздел2
--Направление2
|Категория3
--Направление1
--Направление2
~~~Раздел1
~~~Раздел2
--Направление3
--Направление4
~~~Раздел1
~~~Раздел2
|Категория4
--Направление1
--Направление2
~~~Раздел1
~~~Раздел2
P.S.: item- это страница и id у item - это id страницы, но получается мне надо взять не просто id страницы, а именно id относящегося к item в меню, так?
У вас вроде пол кода нормально написано, а вторая половина - через ... . Джекил и Хайт какой-то.
Вот этот код за что отвечает?
<xsl:template match="items" mode="top_drop3">
<span class="polygon"></span>
<div class="under_menu">
<div class="block-link">
<span><a href="/action" class="orange">Акции</a></span>
<span><a href="/price" class="blue">Цены</a></span>
</div>
<div class="block-info">
<div class="list-services">
<xsl:apply-templates select="item" mode="top_drop3"/>
</div>
<!-- Карусель -->
<div class="carousel-container">
<!-- вызов запроса для специалистов -->
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />
<button class="prev"></button>
<button class="next"></button>
</div>
</div>
</div>
</xsl:template>
Я предполагаю, что он отвечает за правило обработки тега items. И внутри этого тега есть какие-то теги item. А в каждом теге item видимо содержится что-то. И еще снаружи есть тег item. И в нем тоже содержится что-то.
В связи с этим вопросы:
1. Какая логическая сущность содержится в item снаружи items?
2. Какая логическая сущность содержится в item внутри items?
Если нужная вам логическая сущность содержится в теге item, которая снаружи - то вам нужно будет переписать
<xsl:apply-templates select="document(concat('usel://carousel_main/', $result/result/page/@id))/udata" mode="carousel_specialisty" />
на
<xsl:apply-templates select="document(concat('usel://carousel_main/', ../@id))/udata" mode="carousel_specialisty" />
Если внутри - то нужно будет весь этот кусок переписывать.
Сдается мне, что вам вообще это не нужно и вы делаете дополнительный вызов usel://carousel_main/ имея ровно такой же результат во вложенных item. В этом нет проблемы, пока у вас на сайте нет пользователей. Как только нагрузка на сайт увеличиться - получите затык с производительностью.
У меня такой вопрос.
Если мне надо проверять несколько разных типов данных, у них есть в наличие поле ссылка на дерево с именем link_timber
То usel получается будет такой?
<selection>
<target result="pages">
<!-- Т.е. тут получается логическое ИЛИ, так?-->
<type id="148" />
<type id="152" />
<type id="105" />
</target>
<property name="link_timber">
<page>{1}</page>
</property>
<extended>
<properties>foto_glavnaya, zagalovok_glavnaya, text_glavnaya</properties>
</extended>
</selection>
Мне надо сделать так, чтобы на главной странице выводились разных 4 блока, по желанию заказчика.
Если захотел вывести блок со Специалистом, выбирает у в специалисте ссылку на главную в Ссылка на Дерево.
И там каких-то три Направления, точно так же.
какой фокус они захотят еще...