Вывод текста только определенной группе пользователей (XSLT) — различия между версиями
Alexei (обсуждение | вклад) |
Alexei (обсуждение | вклад) м (переименовал «Вывод текста только определенной группе пользователей» в «Вывод текста только определенной группе пользователей (XSLT)») |
(нет различий)
|
Текущая версия на 10:24, 1 августа 2013
Актуально для версии 2.9.1
Иногда требуется сделать так, чтобы на странице была выведена дополнительная информация только для определенных групп пользователей, т.е. чтобы обычные пользователи ее не видели. Для реализации этой задачи сначала необходимо добавить в необходимый тип данных новое поле, сделаем его видимым и дадим ему тип "Простой текст" -
Теперь необходимо выполнить редактирование шаблонов. В качестве примера будем использовать стандартный 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) Обычный пользователь
2) Пользователь из специальной группы