UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Web-copyspb от 13 Августа 2014, 19:23:44

Название: Вывод блока с информацией только в определённом разделе сайта.
Отправлено: Web-copyspb от 13 Августа 2014, 19:23:44
Добрый день!
Как можно определить в xslt-шаблонизаторе, есть ли у страницы родитель с определённым ID? Если родитель один, то всё понятно, а что делать если страница находится на третьем уровне, а мне нужно определить в каком разделе она находится?

Вообще у меня стоит задача вывести блок с информацией только на страницах определённого раздела, при этом не используя новый шаблон.
Название: Re:Вывод блока с информацией только в определённом разделе сайта.
Отправлено: Web-copyspb от 13 Августа 2014, 19:44:10
Кажется разобрался сам, использовал
/result/parents/page/@id
Название: Re:Вывод блока с информацией только в опреде&
Отправлено: ilyar от 13 Августа 2014, 20:23:45
Как можно определить в xslt-шаблонизаторе, есть ли у страницы родитель с определённым ID?

Id родителя /result/page/@parentId

на первом уровне всегда parentId="0"

Если родитель один, то всё понятно, а что делать если страница находится на третьем уровне, а мне нужно определить в каком разделе она находится?

Id родителя /result/page/@parentId эквивалентно /result/parents/page[last()]/@parentId, но можно получить дополнительную информацию:

Псевдостатический адрес /result/parents/page[last()]/@alt-name
Название /result/parents/page[last()]/name

Глубина вложенности count(/result/parents/page)


Вообще у меня стоит задача вывести блок с информацией только на страницах определённого раздела, при этом не используя новый шаблон.

      <xsl:if test="count(/result/parents/page) = 3">
        <!-- some cod -->
      </xsl:if>

      <xsl:if test="/result/parents/page[@alt-name='target']">
        <!-- some cod -->
      </xsl:if>

      <xsl:if test="/result/parents/page[@id='111']">
        <!-- some cod -->
      </xsl:if>

Кажется разобрался сам, использовал
/result/parents/page/@id

Получим id второго уровня, на странице второго и более уровня, а на первом ничего не получим.