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

W

worldencoder2

#1



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






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

Wmboard

#2
Хорошая тема.
Кстати, иногда условия не срабатывают.
Где то я пробовал обойтись без плагина, который ликвидирует невидимок на форуме. Условие показывать чекбокс только админам не работало.
 
W

worldencoder2

#3
Veter, спасибо).

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

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

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

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

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



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

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




 
W

Wmboard

#4
Я сделал вывод что чаще всего, это происходит если "пользователь, администратор" путает приоритетность мастер шаблона по отношению к остальным (вторичным) шаблонам.
Ну у меня никогда и нигде не бывает дочерних шаблонов.
Пробовал делать еще на тестовом, перед конвертацией вобловского форума на хреньку. Делал на лету, особо не вникая. Условия не срабатывали чекбокс оставался виден. Ну и отложил, с тех пор не возвращался. Хотя можно было бы попробовать, форум теперь переехал и работает на ксени.
Может вернусь как-нибудь. Потому что плагин, который убирает невидимок часто слетает. По условиям же можно настроить даже по группам, допустим дать это право модераторам.
 
Get involved!

Here you can only see a limited number of comments. On СЕО Форум Вебмастеров you see all comments and all functions are available to you. To the thread