Шаблон действительно можно разместить в папке ~/templates/{имя_шаблона} подробнее о структуре написано в документе: Новый формат хранения шаблонов (http://dev.docs.umi-cms.ru/shablony_i_makrosy/novyj_format_hraneniya_shablonov/). В итоге должна получится такая структура:
templates
└── {имя_шаблона}
├── js
├── css
├── images
├── classes
├── admin (с версии 2.11)
├── umaps
├── usels
└── xslt
XSLT строгий язык и придирчив к структуре, поэтому надо внимательно делать изменения. Ситуация "все пропало...", предположу что это выглядит, как просто белая страница, скорей всего связана с ошибкой в структуре.
Рекомендую вставлять пример из второго шага последовательно, т.е. частями и проверять каждое изменение.
Также будет еще полезно использовать "правильный" редактор кода т.е. с поддержкой проверки синтаксиса xsl, также большинство популярных IDE поддерживают такую возможность.
<img /> все закрыты.
Вставила верстку частями, но например при вставке меню, сразу белая страница, хотя все теги закрыты:
<!-- /menu -->
<nav class="menu">
<ul class="blockeasing">
<li class="main"><a href="#">О компании</a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<li><a href="#">правовая информация</a></li>
<li><a href="#">как мы работаем</a></li>
<li><a href="#">вакансии</a></li>
</ul>
<ul>
<li><a href="#">отзывы</a></li>
<li><a href="#">статьи</a></li>
<li><a href="#">новости</a></li>
</ul>
<ul class="spec_predl">
<li><a href="#" class="purple">специалисты</a></li>
<li><a href="#" class="blue">цены</a></li>
<li><a href="#" class="green">Записаться на прием?</a></li>
</ul>
</div>
</div>
</li>
<li class="main"><a href="#">Специалисты</a></li>
<li class="main"><a href="#">цены</a></li>
<li class="main"><a href="#">акции & скидки</a></li>
<li class="main"><a href="#">контакты</a></li>
</ul>
</nav>
<img /> все закрыты.
Вставила верстку частями, но например при вставке меню, сразу белая страница, хотя все теги закрыты:
Проблема в амперсанде "&":
<li class="main"><a href="#">акции & скидки</a></li>
надо заменить на:
<li class="main"><a href="#">акции & скидки</a></li>
Из-за это О_О Про такие мелочи не знала... Смогла еще два блока верстки вставить зато. Спасибо ))
А вот это меню не подскажите? Если что я ставила его в блок <form action="#"><fieldset>...</fieldset></form> вместо <div>, стили позволяют такие замены, но при вставке страница все равно становится белой.. :(
<!-- Menu dop -->
<nav class="menu_dop">
<div class="tabs">
<input id="tab1" type="radio" name="tabs" checked />
<label for="tab1" title="Вкладка 1" class="clinical">Тест1</label>
<input id="tab2" type="radio" name="tabs" />
<label for="tab2" title="Вкладка 2" class="cosmetology">Тест2</label>
<input id="tab3" type="radio" name="tabs" />
<label for="tab3" title="Вкладка 3" class="plastic_surgery">Тест3</label>
<input id="tab4" type="radio" name="tabs" />
<label for="tab4" title="Вкладка 4" class="stomatology">Тест4</label>
<section id="content1">
<div class="menu__wrap row-4">
<ul>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
<li><a href="#">Вариант1</a></li>
</ul>
</div>
</section>
<section id="content2">
<div class="menu__wrap row-3x3">
<ul>
<li><a href="#">Вариант2</a></li>
<li><a href="#">Вариант2</a></li>
<li><a class="menu__drop__link" href="#">Вариант2<span class="new"></span></a></li>
</ul>
<ul>
<li><a href="#">Вариант2</a></li>
</ul>
</div>
</section>
<section id="content3">
<div class="menu__wrap row-3x3">
<ul>
<li><a href="#">Вариант3</a></li>
<li><a href="#">Вариант3</a>
<span class="polygon"></span>
<div class="under_menu">
<div class="block-link">
<span><a href="#" class="orange">Акции</a></span>
<span><a href="#" class="blue">Цены</a></span>
<span><a href="#" class="grey">Особенности</a></span>
</div>
<div class="block-info">
<div class="list-services">
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
<a href="#">Вариант3-1</a>
</div>
<div class="carousel-container">
<ul class="carousel">
<li>
<img src="upload/spec1.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
<li>
<img src="upload/spec2.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
<li>
<img src="upload/spec3.png" alt="" />
<big>Имя</big>
<small>Фамилия</small>
<a href="#win1" class="apply">записаться</a>
</li>
</ul>
<button class="prev"></button>
<button class="next"></button>
</div>
</div>
</div>
</li>
<li><a href="#">Вариант3</a></li>
</ul>
</div>
</section>
<section id="content4">
<div class="menu__wrap row-3x4">
<ul>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
<li><a href="#">Вариант4</a></li>
</ul>
</div>
</section>
</div>
</nav>
<!-- /Menu dop -->
Здесь надо было сделать выпадающее меню по клику, с раскрытым первым пунктом при загрузки страницы, так же есть всплывающее третье меню... Поэтому такая структура.
К сожалению смогла сделать реализацию только по этой схеме, других вариантов просто не нашла >.<
И вопрос, xslt не любит всплывающие окна?
Хотя если сейчас с меню станет все ясно, то думаю пойму почему при их вставке страница становится белой @_@
Если все таки последуете совету и включите режим отображения ошибок:
[debug]
enabled = "1"
show-backtrace = "1"
то вместо белой страницы, будут отображаться сообщения вида:
Warning: DOMDocument::load(): Specification mandate value for attribute checked in /umi/xsltTpls/default.xsl
Из этого сообщения стразу понятно где проблема и что проблема в атрибуте. Если посмотрим верстку, найдем краткую запись атрибута checked, XLS такое не переваривает:
<input id="tab1" type="radio" name="tabs" checked />
заменить на:
<input id="tab1" type="radio" name="tabs" checked="checked" />
Ура! Я разобралась как привязать.
Только не могу кое в чем разобраться у меня есть верхнее меню и нижнее, они одинаковые по контенту, только у них разные стили.
Я написала так, но присваивается либо стили нижнего меню, либо стили верхнего меню обоим.
<!-- Header menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
<!-- Footer menu -->
<xsl:template match="udata[@module = 'menu']/udata[@status= 'menu_foot']" mode="info-pages-head">
<nav class="menu_foot">
<ul>
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
И вопрос, вот если мне нужны слайдеры на главной только страницы как их прописать тогда? Т.к. понимаю метод для меню не сработает, так?
match="udata[@module = 'menu']/udata[@status= 'menu_foot']" это стиль для узла udata[@status= 'menu_foot'] являющегося дочерним к udata[@module = 'menu'], поэтому срабатывает только верхний шаблон.
вообще что за конструкция @status= 'menu_foot'???
<!-- Header menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
<!-- Footer menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-foot">
<nav class="menu_foot">
<ul>
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
1. я так делаю
<xsl:if text="result/page/@is-default">слайдер</xsl:if>
2. можно по позиции в списке, можно по id, смысл один и тот же
<li>
<xsl:choose>
<xsl:when test="position() = 1"><xsl:attribute name="class">item-1</xsl:attribute></xsl:when>
<xsl:when test="position() = 2"><xsl:attribute name="class">item-2</xsl:attribute></xsl:when>
<xsl:otherwise><xsl:attribute name="class">item</xsl:attribute></xsl:otherwise>
</xsl:choose>
...
</li>
Когда я поместила слайдер в шаблоне в <xsl:if text="result/page/@is-default">... </xsl:if>
Сайт выдал вот эту ошибку: Warning: XSLTProcessor::importStylesheet(): compilation error:
Ааа...
Как я не обратила внимание на это...>.<
А вот вопрос, сделала меню, вроде норм, решила подцепить всплывающее меню, я так поняла надо создать еще одно меню и к нему обратиться из меню основного, получилось у меня так?
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<nav class="menu">
<ul class="blockeasing">
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<xsl:apply-templates select="document(concat('udata://menu/draw/1273', @id))/udata[items/item]" />
</ul>
</div>
</div>
</li>
</xsl:template>
Теперь у меня есть всплывающий фон меню, но проблема в том, что у всех пунктов меню... Т_т и как вызвать ссылки ко второму меню?
Я поняла как вывести ссылки, точнее как вывести текст подменю.
Но вот как вывести ссылки осталась.
т.е. если пишу код так, то два пункта из подменю идут единой ссылкой (
<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<li><a href="{@link}"><xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata[items/item]" /></a></li>
</ul>
</div>
</div>
</li>
</xsl:template>
И чтобы всплывающее меню было только у нижнего меню.. только заметила...
Кстати, а если у меня две менюшки на сайте, как вывести вторую?><
P.S.: черт... и плашка от всплывающего меню тоже у всех пунктов появляется (
да не, этот код дичь какая-то... Вообще лучше выводить в меню все дерево, если нет большой вложенности, на мой взгляд! тогда по идее должно быть меньше запросов и быстрее отрабатывать, если же отдельными ветками грузить, то так примерно
<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}"><xsl:value-of select="." /></a>
<xsl:apply-templates select="document(concat('udata://content/menu/0/2/', @id))/udata" mode="drop" />
</li>
</xsl:template>
<xsl:template match="udata" mode="drop" />
<xsl:template match="udata[items]" mode="drop">
<div class="menu__drop">
<div class="menu__wrap">
<ul>
<xsl:apply-templates select="items/item" mode="drop" />
</ul>
</div>
</div>
</xsl:template>
<xsl:template match="item" mode="drop">
<li><a href="{@link}"><xsl:value-of select="@name" /></a></li>
</xsl:template>
Доброго времени суток всем )
Хочу вернуться к вопросу о шаблоне html в xslt
Я нашла вот такую статью (единственную на разметку)
http://dev.docs.umi-cms.ru/prakticheskie_primery/lenty_novostej_sredstvami_xslt-shablonizatora/verstka_shablona_razmetki/
и там есть вот такой кусочек
<div id="left">
<xsl:apply-templates select="result" mode="leftcol" />
</div>
По сути сейчас мне без разницы правая и левая колонкой. Но я уже несколько дней мучаюсь:
- не могу найти какой файл влияет на содержимое этой части, т.е. я пишу rightcol, справа появляется текст, но если я в файлах делаю изменения, что указаны в примере, то на сайте изменений не происходит ><
- как мне вызвать какой-то блок в эту колонку, например есть акции, и вот мне надо какую-то одну акцию с определенным параметром(об учебе, так же в пример)
акции у меня есть, я для них использовала новости.
так все-таки, как правильно разбивать в xslt центральную часть на главную и правую колонку?
Вот так я понимаю выводится весь контент?
<xsl:value-of select=".//property[@name = 'content']/value" disable-output-escaping="yes"/>
А как его вывести в правой колонке, если прописана такая строчка:
<div id="right">
<xsl:apply-templates select="result" mode="rightcol" />
</div>
Объясните пожалуйста, что делает этот запрос?
<img src="{document(concat('udata://system/makeThumbnailFull/(.',$img,')/221/260/notemplate/0/1/5/0/100'))/udata/src}"/>
У меня есть страница с типом данных Страница Контента, грубо говоря я на нее вызываю запрос о специалистах.
- Специалисты [Страница контента] - 272
--Категория [Специалисты] - 291
---ФИО [Специалист]
148 - это id типа данных Специалист
Но на страницу ничего не вызывается.. что не так ><
<xsl:template match="result/page[@id = '272']" mode="content">
<div class="container-fluid">
<div class="container">
<div class="block-company">
<div class="company-people">
<h4>История компании в лицах</h4>
<xsl:apply-templates select="document('usel://main/291/148')/udata" mode="human"/>
</div>
</div>
</div>
</div>
</xsl:template>
<xsl:template match="udata" mode="human">
<xsl:apply-templates select="page" mode="human"/>
</xsl:template>
<xsl:template match="page" mode="human">
<div class="human">
<div class="human-wrap"></div>
<div class="human--img">
<xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>
</div>
<div class="human--descr">
<h1><xsl:value-of select="name"/></h1>
<p><xsl:value-of select="extended/properties/property[@name = 'h1']/value"/></p>
</div>
</div>
</xsl:template>
Наверное draw как таковой мне не подойдет...
udata://content/menu/notemplate/0/12
notemplate - говорится что имя шаблона, т.е. это например top_menu?
0 - это получается берется только начальный уровень, т.е. если брать мою структуру, это будет выбираться все Категории, так?
12 - это получается с какой позиции, т.е. например если взять за 2 пункт Категория2, то выведутся все категории, кроме Категория1?
В общем.... пока я тут рассуждала и смотрела, пытаясь сориентироваться по своему меню.... в конец запуталась..... -____-"
Сейчас вся структура, что я описывала Категорииn -> Направленияn -> Статьиn выводятся в верхнем меню.
Да-да, нафиг по сути выводить статьи еще раз в правой колонке, если они есть в выпадающем меню, но вот вожжа под хвост попала, клиент хочет, чтобы и там были статьи привязанные к определенному направлению
Если по функционалу смотреть, то второе вложение меню всегда раскрыто, всплывает при наведении только третье вложение в котором находятся Статьи.
Вот запрос меню, можно на его примере мне немного пояснить?
<!-- Menu -->
<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">
<li class="tab">
<span>
<xsl:choose>
<xsl:when test="position() = 2">
<xsl:attribute name="class">Test1</xsl:attribute>
</xsl:when>
<xsl:when test="position() = 4">
<xsl:attribute name="class">Test2</xsl:attribute>
</xsl:when>
<xsl:when test="position() = 6">
<xsl:attribute name="class">Test3</xsl:attribute>
</xsl:when>
<xsl:when test="position() = 8">
<xsl:attribute name="class">Test4</xsl:attribute>
</xsl:when>
</xsl:choose>
<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:if test="position() = 20">
<xsl:attribute name="class">long-list-breaker</xsl:attribute>
</xsl:if>
<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-info">
<div class="list-services">
<xsl:apply-templates select="item" mode="top_drop3"/>
</div>
</div>
</div>
</xsl:template>
<xsl:template match="item" mode="top_drop3">
<a href="{@link}">
<xsl:value-of select="@name"/>
</a>
</xsl:template>
Вывожу меню:
<xsl:apply-templates select="document('udata://menu/draw/1307')" mode="top_menu"/>
Такое чувство, что я что-то пропустила...
Вот поэтому я и написала, что запуталась...
У меня есть два созданных меню Главное и Дополнительное меню включающее в себя все Категории
Сперва вызывается draw Дополнительного меню, который "подтягивает" Категории, и с помощью content menu "подтягиваю" вложенные в Категории <- Направления, а к Направлениям<-Статьи.
Правильно?
главное чтобы было понятно написано
Сейчас решила посмотреть, что мне выведет в правой колонке запрос:
<xsl:apply-templates select="document('udata://content/menu/')/udata"/>
Выводит он мне пункты главного меню...
Почему так?
Блин... как поставить ограничение у draw (или не у него надо?), чтобы выводилось третье вложение Статьи?
Допустим, я вывела дополнительное меню, в котором все Категории:
<xsl:apply-templates select="document('udata://menu/draw/1307')/udata" mode="right_menu"/>
В коде получается я прописываю:
<xsl:template match="udata[@method = 'menu']" mode="right_menu">
<ul >
<xsl:apply-templates select="items/item" mode="right_menu" />
</ul>
</xsl:template>
<xsl:template match="item" mode="right_menu">
<li>
<a href="{@link}" >
<xsl:value-of select="." />
</a>
</li>
</xsl:template>
Соответственно в правой колонке сейчас отображаются все категории, но я понимаю только как стандартно вызвать меню туда меню, а не ограничить его (((((((((
А если я прописываю так, то выводятся все Направления вложенные в Категории:
<xsl:apply-templates select="document('udata://content/menu/notemplate/0/275')/udata" mode="right_menu"/>
Но это получается не то, что нужно и довольно жесткую привязку, и получается гибкость уходить...
Выводит Главное меню
p.s.:
если прописано
<xsl:apply-templates select="document('udata://content/menu/notemplate/0/273')"/>
- то выводит Категории из Дополнительного меню (где и находится нужная структура)
Если .xml прописывать на каждом этапе вложенности (так скажем), то получается:
- Находясь в Категории Направления не находятся в parents, а просто в page
- Если в Направление, то Статьи не находятся в parents, а просто в page, но сами Направления в parents
- В Статье, тоже отсутствует вокруг
Если прописать:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/page[position() = 1]/@id))"/>
То выводится список Статей только в Направление, внутри Статьи списка нет.
Вот если что кусочек xml
<parents>
<page id="273" parentId="0" link="/napravleniya/" is-visible="1" is-active="1" object-id="1292" type-id="60" type-guid="content-page" update-time="1456395796" alt-name="napravleniya" xlink:href="upage://273">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Направления</name>
</page>
<page id="277" parentId="273" link="/napravleniya/kategoriya/" is-visible="1" is-active="1" object-id="1297" type-id="151" update-time="1457355360" alt-name="kategoriya" xlink:href="upage://277">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Категория</name>
</page>
<page id="284" parentId="277" link="/napravleniya/kategoriya/napravleniya1/" is-visible="1" is-active="1" object-id="1304" type-id="152" update-time="1457088086" alt-name="napravleniya1" xlink:href="upage://284">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Направление1</name>
</page>
</parents>
<page id="288" parentId="284" link="/napravleniya/kategoriya/napravleniya1/statiay1/" is-visible="1" is-active="1" object-id="1309" type-id="172" update-time="1457357323" alt-name="statiay1">
<basetype id="30" module="content">Страницы контента</basetype>
<name>Статья1</name>
...
</page>
P.S.: искала почитать про $document-page-id поиск посоветовал добавить umi, нашелся странный форум, но вот фраза в шапке мне понравилась:
Знать UMI.CMS в совершенстве невозможно. Даже сами разработчики знают о ней не все...
В итоге, я решила проблему очень странным образом...
Вывод идет:
<xsl:choose>
<xsl:when test="result/page/@type-id='152'">
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', $document-page-id))" mode="right_menu"/>
</xsl:when>
<xsl:when test="result/page/@type-id='172'">
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', /result/parents/page[position() = 3]/@id))" mode="right_menu"/>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
152 - тип данных Направления, 172 - Статей
Сам запрос идет такой:
<xsl:template match="udata[@method = 'menu']" mode="right_menu">
<div class="block_useful">
<h4>
<!--тут надо взять название Направления в котором находятся данные статьи -->
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>
<xsl:template match="item" mode="right_menu">
<a href="{@link}" >
<xsl:value-of select="." />
</a>
</xsl:template>
Вот возникло два вопроса:
1) как сделать в данном случае проверку, если например статей нету. А то появляется пустой блок белый block_useful
2) Как взять название Направления, в котором находятся данные статьи, в h4
1) как сделать в данном случае проверку, если например статей нету. А то появляется пустой блок белый block_useful
Сделать проверку на наличие дочерних элементов и если их нет, ничего не выводить
<xsl:template match="udata[@method = 'menu']" mode="right_menu" />
<xsl:template match="udata[@method = 'menu' and items/item]" mode="right_menu">
<div class="block_useful">
<h4>
<!--тут надо взять название Направления в котором находятся данные статьи -->
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>
2) Как взять название Направления, в котором находятся данные статьи, в h4
в результатах макроса udata://content/menu/ (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_menu/#xslt-templating) нет блока с названием элемента от которого идет поиск пунктов меню
Поэтому проще всего передать его как параметр.
Например так:
<xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/', $document-page-id))" mode="right_menu">
<xsl:with-param name="blok-title" select="'Название блока'" />
</xsl:apply-templates>
и шаблон для меню
<xsl:template match="udata[@method = 'menu']" mode="right_menu">
<xsl:param name="blok-title" />
<div class="block_useful">
<h4>
<xsl:value-of select="$blok-title" />
</h4>
<xsl:apply-templates select="items/item" mode="right_menu" />
</div>
</xsl:template>
Хм... а какой надо получается брать параметр?
Если сейчас у меня есть вот такая информация и структура.
Вот мой xml для специалистов сейчас:
<selection>
<target result="pages">
<type id="{2}"/>
<category depth="2">{1}</category>
</target>
<extended>
<groups>specialisty</groups>
<properties>h1, content, header_pic, menu_pic_a, photo, descr, vidimoepole, skrytoepole, zanayutiya, uslugi, priceuslug, familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, css_class, kratkaya_dolzhnost</properties>
</extended>
<limit page="{3}">{4}</limit>
</selection>
Запрос в xsl:
<xsl:template match="result" mode="rightcol_specialisty">
<ul>
<xsl:apply-templates select="document('usel://main/272/148')/udata" 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"/>
<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>
Вывод идет вот такой простой...
<xsl:apply-templates select="result" mode="rightcol_specialisty" />
Получается Направление структура:
-Категория(151)
--Направление (152)
--Направление (152)
-Категория(151)
--Направление (152)
--Направление (152)
и т.д.
А Специалисты:
-Специалисты
--Специалист (148)
--Специалист (148)
--Специалист (148)
и т.д.
Я создавала в типе данных у Специалистов два поля с:
- типом Ссылка на дерево
- типом Выпадающего списка с множественным выбором, к которому подключен как справочник Направления
(я делала его в экспериментальном плане, в расчете использовать его в фильтре)
В обоих выбраны соответствующие Направления для Специалистов
P.S.: В смысле по какому параметру брать и сравнивать их?
Попробовала сделать выборку, но что-то пошло не так....
<selection>
<target expected-result="pages">
<type id="148"/> <!-- здесь выбирается специалисты по типу страницы -->
<!--<category depth="2">{1}</category>-->
</target>
<!--<property name="alt-name" value="alt-name" />-->
<property name="alt-name"> <!-- по сути тут берется alt-name из ссылки дерева и сравнивает со страницами типа данных id 152 -->
<page>152</page>
</property>
<extended>
<groups>kontakty</groups>
<properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, css_class, kratkaya_dolzhnost</properties>
</extended>
<limit page="0">2</limit>
</selection>
По сути сравнение можно делать по alt-name
<selection>
<target result="pages">
<type id="148" />
</target>
<property name="napravlenie">
<page>{1}</page>
</property>
<extended>
<properties>familiya, imya_otchestvo, dolzhnost, fotografiya, otdelenie, napravlenie, css_class, kratkaya_dolzhnost</properties>
</extended>
<limit page="0">2</limit>
</selection>
148 - это тип данных Специалистов, у которых есть Ссылка на дерево с именем napravlenie
Но я проверяю usel вызвав его через адресную строчку, теперь выдает мне 0...
Если посмотреть на эту статью, тут получается можно вызывать блоки Товаров из Каталога, у которых есть поле Ссылка на Дерево.
Т.е. если я вызову(обращусь к) usel запросом из правой колонки, то он должен, если ты находишься на странице, которая совпадает с полем Ссылка на Дерево, вывести соответствующих Специалистов...
Но можно ли адаптировать это под контент страницы?
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
P.S.: А вот такой вывод получается должен быть?
<xsl:apply-templates select="document('usel://right_main')/udata/page" mode="rightcol_specialisty" />