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

Материал из Umicms
Перейти к:навигация, поиск

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