Вывод текста только определенной группе пользователей (XSLT) — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.1''' Иногда требуется сделать так, чтобы на странице была выведен…»)
 
 
(не показана 1 промежуточная версия этого же участника)
Строка 30: Строка 30:
  
  
 
+
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Верстка в XSLT]]
 
 
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]
 

Текущая версия на 10:24, 1 августа 2013

Актуально для версии 2.9.1


Иногда требуется сделать так, чтобы на странице была выведена дополнительная информация только для определенных групп пользователей, т.е. чтобы обычные пользователи ее не видели. Для реализации этой задачи сначала необходимо добавить в необходимый тип данных новое поле, сделаем его видимым и дадим ему тип "Простой текст" -


111.jpg

Теперь необходимо выполнить редактирование шаблонов. В качестве примера будем использовать стандартный xslt шаблон demodizzy. В файле /templates/demodizzy/xslt/default.xsl необходимо добавить следующую строку:

<xsl:variable name="user-group-id" select="document(concat('uobject://', $user-id))//property[@name = 'groups']/value/item/@id" />

Теперь в переменной user-group-id будет храниться id группы пользователя. Дальше добавим вывод скрытого поля в шаблон, для этого в файл /templates/demodizzy/xslt/layouts/default.xsl добавим следующую строку после <xsl:apply-templates select="result" />

<xsl:if test="$document-page-id = 98 and $user-group-id = 1" >
    <xsl:value-of select=".//property[@name = 'tekst_dlya_izbrannyh']/value" />
</xsl:if>

Таким образом мы будем показывать этот блок только на странице с id = 98 и пользователям, состоящим в группе с id = 1. Вот так это будет выглядеть:

1) Обычный пользователь

112.jpg

2) Пользователь из специальной группы

113.jpg