Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

0 Пользователей и 1 Гость просматривают эту тему.

*

Web-copyspb

  • *
  • 8
  • +0/-0
    • Просмотр профиля
Добрый день!
Как можно определить в xslt-шаблонизаторе, есть ли у страницы родитель с определённым ID? Если родитель один, то всё понятно, а что делать если страница находится на третьем уровне, а мне нужно определить в каком разделе она находится?

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

*

Web-copyspb

  • *
  • 8
  • +0/-0
    • Просмотр профиля
Кажется разобрался сам, использовал
/result/parents/page/@id

*

ilyar

  • ***
  • 128
  • +28/-0
  • UMI.CMS, Yii, Vagrant, BEM
    • Просмотр профиля
    • ilyar на toster
Re:Вывод блока с информацией только в опреде&
« Ответ #2 : 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 второго уровня, на странице второго и более уровня, а на первом ничего не получим.
« Последнее редактирование: 13 Август 2014, 20:27:18 от ilyar »