Вывод текста только определенной группе пользователей (XSLT)

Материал из Umicms
Версия от 08:58, 31 июля 2013; Alexei (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.1''' Иногда требуется сделать так, чтобы на странице была выведен…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 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