Не редко при настройке обсуждения ставится задача особенных подписей, зависящих от динамически изменяемых данных. Для того, чтобы это реализовать штатными средствами модуля, был разработан механизм «Формулы подписей». В формулах могут использоваться четыре вида данных: текст, поля комментария, стандартные поля пользователя, пользовательские поля пользователя.
Область применения данного механизма довольно обширна. Вот несколько примеров, где данный механизм оказывается очень полезным:
Пример 1. Необходимо к подписи выводить дополнительные данные: "Имя Фамилия (Город)".
Пример 2. Необходимо выводить: «Подпись комментатора (Уровень по рейтингу)»
Пример 3. Необходимо выводить: «Логин [на сайте / оффлайн] — электронный адрес».
Управление формулами подписей производится на специальной сервисной странице: Административный раздел / Сервис / Полноценные комментарии / Формулы подписей.
Элементы управления на странице:
Элементы управления в форме:
Группировка определённых частей формулы необходима для того, чтобы в сложно-составных случаях результат — сгенерённая по формуле подпись — выглядела адекватно. Имеется в виду следующее: вернёмся к нашему Примеру 1 — «Имя Фамилия (Город)». Обратим внимание на финальную часть формулы. Она состоит из трёх частей: открывающаяся скобка + поле пользователя «Город» + закрывающаяся скобка. Для тех пользователей, у которых поле «Город» не установлено, результат будет выглядеть так: «Пётр Петров ()». Для того, чтобы пустых скобок не было, нам нужно, чтобы все три части зависели друг от друга. Для этого их нужно связать — объединить в одну группу. В этом случае, если одна из частей группы содержит пустое значение (для пользователя Пётр Петров — не указан город проживания), вся группа будет исключена из подписи.
Вот как данная связка будет выглядеть в форме редактирования формулы:
После того, как в системе создана хотя бы одна формула, её можно указать в параметрах компонента.
После этого механизм построения дерева обсуждения переключится на составные подписи, собранные по указанной формуле. Если формула не найдена (например, код формулы указан в компоненте, но она после этого была удалена в админке) — будет применён обычный механизм подписи.
При построении формулы следует учитывать тот факт, что «Подпись комментатора» — текст, который отображается в шапке каждого комментария — вычисляется по следующим условиям:
Рассмотрим, каким образом можно использовать механизм составления подписей по формулам, применительно к описанным трём примерам.
Пример 1. Необходимо подписях к комментариям выводить дополнительные данные в виде: «Имя Фамилия (Город)». В этом случае формула может состоять из таких частей:
либо
Пример 2. Необходимо выводить подпись в виде: «Подпись комментатора (Уровень по рейтингу)»
Подготовительные работы, за рамками модуля «Полноценные комментарии»: для пользователей необходимо завести текстовое пользовательское свойство-маркер (например: UF_STATUS), которым каждому пользователю устанавливается определённый статус (звание, положение) на основе рейтинга.
В этом случае наша формула будет выглядеть например так:
Пример 3. Необходимо выводить: «Логин [на сайте / оффлайн] — электронный адрес».
Подготовительные работы, за рамками модуля «Полноценные комментарии»: для пользователей необходимо завести текстовое пользовательское свойство-маркер (например: UF_IS_ONLINE), которым устанавливается определённый статус (звание, положение) на основе рейтинга.
В этом случае наша формула будет выглядеть примерно так: