Задача
Предположим, есть таблица-прайслист, в которой одной из колонок является цена. Мы хотим показывать цену только для авторизованных пользователей.
Решение
Нам понадобятся макроподстановки $AuthBlock[]$ и $UserProfile[]$.
Спланируем взаимодействие с пользователем. Предположим, это будет выглядеть так:
- авторизованный пользователь видит в таблице актуальные цены
- неавторизованный пользователь видит в таблице некий текст или картинку обозначающую, что доступа к цене у него нет. Также, можно сделать с этого текста/картинки ссылку на конец страницы (как вариант), где должна быть форма для ввода логина-пароля, ссылка на регистрацию и некий пояснительный текст.
Нам остается только в местах где выводится цена использовать макрос $UserProfile[]$ примерно так:
$Text[source: "тут цена"; condition: $NotEmpty[$UserProfile[id]$]$]$
$Text[source: "тут заменитель цены для незарегистрированных пользователей со ссылкой на форму"; condition: $Empty[$UserProfile[id]$]$]$
$UserProfile[id]$ выводит идентификатор текущего пользователя, если он авторизован, в противном случае он возвращает пустую строку. Так мы проверяем на факт авторизованности текущего посетителя сайта.
Внизу прайса используем $AuthBlock$ стандартным образом согласно документации. Когда пользователь неавторизован он выведет форму авторизации, а когда авторизован можно ничего не выводить, тогда формы просто не будет. А можно вывести профайл пользователя, его статистику, специальное предложение или что-то ещё.