Бормотухи.НЕТ

Вернуться   Бормотухи.НЕТ > Web-мастеру > XenForo > Инструкции для XenForo
Расширенный поиск

Инструкции для XenForo Различные инструкции и рекомендации по движку XenForo

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2015, 15:04 Вверх   #1
Грамотный форумчанин
 
Аватар для Dikiy_J
Dikiy_J вне форума
Доп. информация
По умолчанию Условия в шаблонах Xenforo

Код:
http://xenforo.com/community/resources/conditional-statements.1604/
Оригинальный автор: Brogan
Авторы перевода: adder и Romchik®
Источник :
Код:
http://www.xf-russia.ru/forum/threads/uslovija-v-shablonax.7878/
Операторы можно расширить используя 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>


Условия найденные мной [ДикиЙ]:


Отображение содержимого если автор сообщения определённый id [через запятую]

Код:
<xen:if is="in_array({$post.user_id} , array(id пользователя))">
Личность
</xen:if>
Первый пост будет периодически обновляться новыми примерами. Был бы очень рад помощи в виде примеров и их описании в комментариях!
  Ответить с цитированием
Cказали cпасибо:
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
 

Время генерации страницы 0.09329 секунды с 11 запросами