Условия в шаблонах Xenforo примеры использования

worldencoder2

Пользователь
Регистрация
28.08.16
Сообщения
4
Реакции
3
Баллы
3
Адрес
Нижегородская обл.



УСЛОВИЯ В ШАБЛОНАХ - примеры использования






В зависимости от того с каким шаблоном вы ведёте работу, Вам может понадобится использовать $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>






  • ОТОБРАЖЕНИЕ СОДЕРЖИМОГО ТОЛЬКО АВТОРИЗОВАННЫМ ПОЛЬЗОВАТЕЛЯМ (НЕ ПОКАЗЫВАТЬ ГОСТЯМ):
    <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>
 
Последнее редактирование модератором:

Wmboard

Пользователь
Регистрация
01.01.70
Сообщения
9.274
Реакции
2.665
Баллы
28
Адрес
На wmboard
Хорошая тема.
Кстати, иногда условия не срабатывают.
Где то я пробовал обойтись без плагина, который ликвидирует невидимок на форуме. Условие показывать чекбокс только админам не работало.
 

worldencoder2

Пользователь
Регистрация
28.08.16
Сообщения
4
Реакции
3
Баллы
3
Адрес
Нижегородская обл.
Veter, спасибо).

иногда условия не срабатывают

Условия действительно могут не срабатывать, основные причины:
  • разность версий xenforo

  • некорректная модификация в шаблонах

  • Ручная правка во вторичных шаблонах

Я сделал вывод что чаще всего, это происходит если "пользователь, администратор" путает приоритетность мастер шаблона по отношению к остальным (вторичным) шаблонам.



К примеру модификацию делают в Мастер-стиль
при этом в New_Style заранее были произведены ручные правки шаблона, что закономерно приведет к ошибкам\несрабатываниям 'модификации шаблона'!

Вывод такой, -- быть внимательнее, пользоваться инструментами сравнения, тестировать модификации.




 

Wmboard

Пользователь
Регистрация
01.01.70
Сообщения
9.274
Реакции
2.665
Баллы
28
Адрес
На wmboard
Я сделал вывод что чаще всего, это происходит если "пользователь, администратор" путает приоритетность мастер шаблона по отношению к остальным (вторичным) шаблонам.
Ну у меня никогда и нигде не бывает дочерних шаблонов.
Пробовал делать еще на тестовом, перед конвертацией вобловского форума на хреньку. Делал на лету, особо не вникая. Условия не срабатывали чекбокс оставался виден. Ну и отложил, с тех пор не возвращался. Хотя можно было бы попробовать, форум теперь переехал и работает на ксени.
Может вернусь как-нибудь. Потому что плагин, который убирает невидимок часто слетает. По условиям же можно настроить даже по группам, допустим дать это право модераторам.
 

Статистика форума

Темы
200.483
Сообщения
380.310
Пользователи
327.890
Новый пользователь
рикитики
Сверху Снизу