1. Наши основные группы и каналы: VK, Twitter и Reddit. Подписывайтесь!
  2. Форум работает за счет ваших пожертвований, поэтому у нас нет внешней рекламы.
    Пожертвовать рубль на развитие форума Вы можете по ссылке.
  3. Доступна продажа токенов DAPF Invest!
    Подробности в теме: Торговые площадки токена DAPF
Скрыть объявление
О том как быстро
набрать нужное
число сообщений
написано здесь
Пожертвовать рубль
на развитие
форума можно тут.

Условия отображения содержимого в Xenforo Статья

Тема в разделе "XenForo", создана пользователем X-ray, 28 ноя 2014.

  1. X-ray Шустроган

    Репутация

    1.279 / 2.704


    Постоянно приходится искать :) пусть будут тут.

    Мы их перевели специально для XF-RUSSIA.RU. Если будете копировать на свой сайт - оставляйте ссылку на авторов перевода и на XFR!
    Окай:
    Оригинальный автор: Brogan
    Авторы перевода: adder и Romchik®

    Операторы можно расширить используя AND, OR, xen:else и xen:elseif.

    Замена == на != в примерах ниже будет менять условие с положительного на отрицательное.
    К примеру, <xen:if is="{$visitor.user_id} == x"> является положительным, а <xen:if is="{$visitor.user_id} != x"> отрицательным.

    Там, где аргумент имеет только один параметр, вставка ! перед параметром имеет тот же самый эффект.
    К примеру, <xen:if is="{$visitor.user_id}"> является положительным, а <xen:if is="!{$visitor.user_id}"> уже будет отрицательным.

    При работе с массивами ставьте ! прямо перед аргументом.
    К примеру, <xen:if is="in_array({$forum.node_id}, array(x, y, z))"> будет положительным, а <xen:if is="!in_array({$forum.node_id}, array(x, y, z))"> отрицательным.

    Используя xen:else и xen:elseif, мультиоператоры можно укомплектовать в один.
    Самая проста форма использования xen:else выглядит так:
    <xen:if is="{$forum.node_id} == x">
    Этот контент будет показан в форуме x
    <xen:else />
    Этот контент будет показан в любом другом месте
    </xen:if>


    Более расширенное условие с мультиоператорами используя xen:elseif будет выглядеть так:
    <xen:if is="{$forum.node_id} == x">
    Этот контент будет показан в форуме x
    <xen:elseif is="{$forum.node_id} == y" />
    Этот контент будет показан в форуме y
    <xen:elseif is="{$forum.node_id} == z" />
    Этот контент будет показан в форуме z
    <xen:else />
    Этот контент будет показан в любом другом месте
    </xen:if>


    В зависимости от того с каким шаблоном вы ведёте работу, Вам может понадобится использовать $user вместо $visitor; $visitor всегда является записью текущего залогиненного пользователя, а $user это запись обработчика (пример: автор сообщения, список пользователей, список пользователей онлайн и т.д.)

    При работе с шаблоном PAGE_CONTAINER можно передавать переменные из шаблонов представления (category_view, forum_view, thread_view и т.д.), используя xen:container. Это справедливо ко всем шаблонам, которые подключаются к шаблону PAGE_CONTAINER (допустим, шаблоны header или ad_header). Например, чтобы использовать переменную $forum.node_id, нужно добавить в шаблон следующее: <xen:container var="$forumId">{$forum.node_id}</xen:container>.
    Точно так же, для переменной $threadId нужно добавить следующее: <xen:container var="$threadId">{$thread.thread_id}</xen:container>.

    Переменные X, Y или Z, использующиеся в примерах, должны быть заменены на их актуальные значения.

    Отображение содержимого только авторизованным пользователям (не показывать гостям):
    <xen:if is="{$visitor.user_id}">
    Содержимое видно только авторизованным пользователям
    </xen:if>


    Отображение содержимого только гостям (не показывать авторизованным пользователям):
    <xen:if is="!{$visitor.user_id}">
    Содержимое видно только гостям
    </xen:if>


    Отображение различного содержимого гостям и авторизованным:
    <xen:if is="{$visitor.user_id}">
    Это содержимое видно только авторизованным пользователям
    <xen:else />
    Это содержимое видно только гостям
    </xen:if>


    Отображение содержимого определенной группе пользователей:
    <xen:if is="{xen:helper ismemberof, $visitor, X}">
    Это содержимое видно только группе с ID=X
    </xen:if>


    Скрытие содержимого от определенной группы пользователей:
    <xen:if is="!{xen:helper ismemberof, $visitor, X}">
    Это содержимое скрыто от группы с ID=X
    </xen:if>


    Отображение содержимого нескольким группам пользователей:
    <xen:if is="{xen:helper ismemberof, $visitor, X, Y}">
    Это содержимое видно только группам с ID=X и ID=Y
    </xen:if>


    Скрытие содержимого от нескольких групп пользователей:
    <xen:if is="!{xen:helper ismemberof, $visitor, X, Y}">
    Это содержимое скрыто от групп с ID=X и ID=Y
    </xen:if>


    Отображение содержимого только администраторам:
    <xen:if is="{$visitor.is_admin}">
    Это содержимое видно только администраторам
    </xen:if>


    Отображение содержимого только модераторам:
    <xen:if is="{$visitor.is_moderator}">
    Это содержимое видно только модераторам
    </xen:if>


    Отображение содержимого только администраторам и модераторам:
    <xen:if is="{$visitor.is_admin} OR {$visitor.is_moderator}">
    Это содержимое видно толькоадминистраторам и модераторам
    </xen:if>


    Отображение содержимого только определенному пользователю:
    <xen:if is="{$visitor.user_id} == X">
    Это содержимое видно только пользователю с ID=X
    </xen:if>


    Отображение содержимого нескольким пользователям:
    <xen:if is="in_array({$visitor.user_id}, array(X, Y, Z))">
    Это содержимое видно только пользователям с ID=X, ID=Y и ID=Z.
    </xen:if>


    Отображение содержимого после первого сообщения в теме:
    <xen:if is="{$post.position} == 0">
    Это содержимое видно после первого сообщения в теме
    </xen:if>


    Отображение содержимого после первого сообщения в теме или личной переписке:
    <xen:if is="{$post.position} == 0 AND !{$message.conversation_id}">
    Это содержимое видно после первого сообщения в теме или личной переписке
    </xen:if>


    Отображение содержимого после X сообщений в теме на каждой странице:
    <xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == X AND !{$message.conversation_id}">
    Это содержимое видно после X сообщений в теме на каждой странице
    </xen:if>


    Отображение содержимого после X сообщений в теме или личной переписке на каждой странице:
    <xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == X">
    Это содержимое видно после X сообщений в теме или личной переписке на каждой странице
    </xen:if>


    Отображение содержимого после X сообщений в теме на каждой странице, только в разделах Y или Z:
    <xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == X AND in_array({$thread.node_id}, array(Y, Z))">
    Это содержимое видно после X сообщений в теме на каждой странице, только в разделах Y и Z
    </xen:if>


    Отображение содержимого после X сообщений в теме на каждой странице, кроме разделов Y и Z:
    <xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND !in_array({$thread.node_id}, array(Y, Z))">
    Это содержимое видно после X сообщений в теме на каждой странице, кроме разделов Y и Z
    </xen:if>


    Отображение содержимого только на определенных страницах:
    <xen:if is="{$contentTemplate} == 'XYZ'">
    Это содержимое видно только на странице XYZ
    </xen:if>


    Отображение содержимого только в определенной категории:
    <xen:if is="{$category.node_id} == X">
    Это содержимое видно только в категории X
    </xen:if>

    Примечание: чтобы это работало, необходимо включить опцию "Создавать страницы для категорий" в настройках:
    Панель администратора -> Настройки -> Список разделов форума и узлов.

    Отображение содержимого только в определенном разделе:
    <xen:if is="{$forum.node_id} == X">
    Это содержимое видно только в разделе X
    </xen:if>


    Отображение содержимого только в нескольких определенных разделах:
    <xen:if is="in_array({$forum.node_id}, array(X, Y, Z))">
    Это содержимое видно только в разделах X, Y и Z
    </xen:if>


    Отображение содержимого только в определенной теме:
    <xen:if is="{$threadId} == X">
    Это содержимое видно только в теме X
    </xen:if>


    Отображение содержимого только в нескольких определенных темах:
    <xen:if is="in_array({$threadId}, array(X, Y, Z))">
    Это содержимое видно только в темах X, Y и Z
    </xen:if>


    Отображение содержимого только в определенном сообщении:
    <xen:if is="{$postId} == X">
    Это содержимое видно только в сообщении X
    </xen:if>


    Отображение содержимого только в нескольких определенных сообщениях:
    <xen:if is="in_array({$postId}, array(X, Y, Z))">
    Это содержимое видно только в сообщениях X, Y и Z
    </xen:if>


    Отображение содержимого если автор сообщения является автором темы:
    <xen:if is="{$post.user_id} == {$thread.user_id}">
    Это содержимое видно если автор является автором темы
    </xen:if>


    Отображение содержимого пользователям, у которых 0 сообщений:
    <xen:if is="{$visitor.message_count} == 0">
    Это содержимое видно только пользователям, у которых 0 сообщений
    </xen:if>


    Отображение содержимого пользователям, у которых более X сообщений:
    <xen:if is="{$visitor.message_count} > X">
    Это содержимое видно только пользователям, у которых более X сообщений
    </xen:if>


    Отображение содержимого пользователям, у которых менее X сообщений:
    <xen:if is="{$visitor.message_count} < X">
    Это содержимое видно только пользователям, у которых менее X сообщений
    </xen:if>



    Отображение содержимого пользователям, которые не подтвердили свой почтовый адрес:
    <xen:if is="{$isAwaitingEmailConfirmation}">
    Это содержимое видно только пользователям, которые не подтвердили свой почтовый адрес
    </xen:if>


    Отображение содержимого пользователям, которые пришли с поисковых систем:
    <xen:if is="{$visitor.from_search}">
    Это содержимое видно только пользователям, которые пришли с поисковых систем
    </xen:if>


    Цель: вывод ника автора сообщения в нужное мне место в шаблоне message
    1. Открываем шаблон message.
    2. Находим нужное место.
    3. Вставляем данный код:
      Код:
      <xen:username user="$message" class="author" />
    4. Радуемся результату.

    Цель: вывод миниаватара около навигационной панели пользователя
    1. Открываем шаблон navigation_visitor_tab.
    2. Находим нужное место.
    3. Вставляем данный код:
      Код:
      <img src="{xen:helper avatar, $visitor, s}" class="miniMe" alt="" />
    4. Радуемся результату.

    Первый пост будет периодически обновляться новыми примерами. Был бы очень рад помощи в виде примеров и их описании в комментариях!