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

kasim

Регистрация
31.01.16
Сообщения
28
Симпатии
11
#1
Условия переменных в шаблонах XenForo

Как я могу отобразить содержимое только для зарегистрированных пользователей и скрыть его от гостей?

Код:
<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}">
Этот текст видят только пользователи из группы x
</xen:if>
Как я могу скрыть содержимое от определённых групп пользователей?
Код:
<xen:if is="!{xen:helper ismemberof, $visitor, x}">
Данный текст скрыт от пользователей из группы x
</xen:if>
Как я могу отобразить содержимое нескольким определённым группам пользователей?
Код:
<xen:if is="{xen:helper ismemberof, $visitor, x, y}">
Данный текст видят  только пользователи из групп x и/или y
</xen:if>
Как я могу скрыть содержимое от нескольких групп?
Код:
<xen:if is="!{xen:helper ismemberof, $visitor, x, y}">
Данный текст скрыт от пользователей из групп x и/или 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">
Этот текст видит только пользователь x
</xen:if>
Как я могу отобразить содержимое для нескольких конкретных пользователей?
Код:
<xen:if is="in_array({$visitor.user_id}, array(x, y, z))">
Этот текст видят только пользователи x, y и z
</xen:if>
Как я могу отобразить содержимое после первого сообщения в теме или переписке?
Код:
<xen:if is="{$post.position} == 0 AND !{$message.conversation_id}">
Этот текст будет показан после первого сообщения темы или переписки
</xen:if>
Как я могу отобразить содержимое после первого сообщения в теме?
Код:
<xen:if is="{$post.position} == 0">
Этот текст будет отображён после первого сообщения
</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="in_array({$contentTemplate}, array('forum_list', 'forum_view', 'thread_view'))">
Этот текст будет показан в шаблонах 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="{$thread.thread_id} == 'x'">
Этот текст будет показан в теме x
</xen:if>
Как я могу отобразить содержимое в нескольких темах форума?
Код:
<xen:if is="in_array({$threadId}, array(x, y, z))">
Этот текст будет показан только в темах x, y, и z
</xen:if>
Или так:
Код:
<xen:if is="in_array({$thread.thread_id}, 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="{$thread.user_id} == x">
Это сообщение видит только автор x
</xen:if>
Как я могу отобразить содержимое в сообщении автора темы?
Код:
<xen:if is="{$post.user_id} == {$thread.user_id}">
Это сообщение будет показано в сообщении автора темы
</xen:if>
Как я могу отобразить содержимое для пользователей, у которых ноль сообщений?
Код:
<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>
Как я могу отобразить содержимое только для пользователей, которые не подтвердили свой email адрес?
Код:
<xen:if is="{$isAwaitingEmailConfirmation}">
Этот текст будет показан только пользователям, которые не подтвердили свой email адрес
</xen:if>
Как я могу отобразить содержимое для посетителей, пришедших из поисковых систем?
Код:
<xen:if is="{$visitor.from_search}">
Этот текст будет виден только для посетителей, пришедших из поисковых систем
</xen:if>
Как я могу отобразить содержимое для пользователей, зарегистрированных менее 30 дней?
Код:
<xen:if is="{$visitor.register_date} > {$serverTime} - (3600 * 24 * 30)">
Этот текст будет виден только для пользователей, зарегистрированных менее 30 дней
</xen:if>
Как я могу отобразить содержимое только для видимых пользователей?
Код:
<xen:if is="{$user.visible}">
Это содержимое смогут просматривать только видимые пользователи
</xen:if>
Как я могу отобразить содержимое только для тех пользователей, у которых есть аватар?
Код:
<xen:if is="{$visitor.avatar_date} OR {$visitor.gravatar}">
Это содержимое могут видеть только те пользователи, которые установили себе аватар
</xen:if>
Как я могу отобразить содержимое только для тех пользователей, у которых нет аватара?
Код:
<xen:if is="!{$visitor.avatar_date} AND !{$visitor.gravatar}">
Это содержимое могут видеть только те пользователи, у которых нет аватара
</xen:if>
Как я могу отобразить содержимое только для тех пользователей, у которых заполнено дополнительно поле X?
Код:
<xen:if is="{$visitor.customFields.field_id}">
Это содержимое могут просматривать только те пользователи, у которых заполнено дополнительное поле X (field_id необходимо заменить на ID нужного поля)
</xen:if>
Как я могу отобразить информацию только для пользователей, у которых не менее X симпатий?
Код:
<xen:if is="{$visitor.like_count} > 5">
Это содержимое могут видеть только пользователи, набравшие 5 симпатий
</xen:if>
Правильно вставить "свой html" после любого по счету сообщения на каждой странице (кроме личных переписок)
(Обратите внимание, что сообщения нумеруются от нуля!):

Код:
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == 0 AND !{$conversation}">
Cвой html
</xen:if>
После второго сообщения на каждой странице:
Код:
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == 1 AND !{$message.conversation_id}">
Cвой html после второго сообщения
</xen:if>
Рандомный (случайный) показ:
Код:
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == {xen:calc '({$serverTime} % 9) + 1'} AND !{$message.conversation_id}">
Рандомно.. при условии что на странице 10 сообщений )))
</xen:if>
Как показать содержимое пользователям определённого пола?
Код:
<xen:if is="{$user.gender} == 'male'">
Для мальчиков
</xen:if>
Код:
<xen:if is="{$user.gender} == 'female'">
Для девочек
</xen:if>
Код:
<xen:if is="{$user.gender} == 'male'">
Для мальчиков
<xen:elseif is="{$user.gender} == 'female'" />
Для девочек
<xen:else />
Для тех, кто не указал свой пол.
</xen:if>
Как я могу скрыть содержимое от поисковых роботов?
Код:
<xen:if is="!{$session.robotId}">
Этот текст не могут видеть поисковые роботы
</xen:if>
Как сделать вывод для пользователей, у которых не заполнено поле Адрес (Location)?
Код:
<xen:if is="!{$visitor.location}">
Этот текст будет виден только для посетителей, у которых не заполнено местоположение
</xen:if>
Как я могу отобразить содержимое пользователю в его День Рождения?
Код:
<xen:if is="{$visitor.dob_month} == 6 && {$visitor.dob_day} == 9">
Этот текст будет показан пользователю 9 июня.
</xen:if>
Если вы хотите отобразить данный текст в разделе только на первой странице (шаблон forum_view или где есть PAGINATION)
Код:
<xen:if is="{$page} == 1">
Этот текст отображается только на первой странице в разделе.
</xen:if>
Если вы хотите отобразить текст для команды форума
Код:
<xen:if is="{$visitor.is_staff}">
Этот текст видят только команда форума.
</xen:if>
Если вы хотите отобразить текст для заблокированных пользователей
Код:
<xen:if is="{$visitor.is_banned}">
Этот текст видят только заблокированные пользователи.
</xen:if>
Состояние пользователя
Код:
<xen:if is="{$visitor.user_state} == 'valid'">
Этот текст видят только активированные пользователи.
<xen:elseif is="{$visitor.user_state} == 'email_confirm' " />
Этот текст видят только те кто ожидает подтверждение по электронной почте.
<xen:elseif is="{$visitor.user_state} == 'email_confirm_edit' " />
Этот текст видят только те кто ожидает подтверждение по электронной почте (после редактирования).
<xen:elseif is="{$visitor.user_state} == 'email_bounce' " />
Этот текст видят только те у кого электронная почта недействительна.
<xen:elseif is="{$visitor.user_state} == 'moderated' " />
Этот текст видят только те пользователи которые ожидают одобрения.
</xen:if>

Если вы хотите отобразить текст нежелательному пользователю


Код:
<xen:if is="{$visitor.is_discouraged}">
Этот текст видят только нежелательные пользователи.
</xen:if>
 

JanP

Регистрация
16.04.16
Сообщения
74
Симпатии
2
#2
Добрый день.
Прошу прощения за возможно глупый вопрос, но не совсем понятно, в какой шаблон нужно вставить код,
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND !{$message.conversation_id}">
Этот текст будет показан после сообщения x на каждой странице темы
</xen:if>
Нужно чтоб реклама отображалась на каждой странице после 1-го сообщения на каждой странице.
Огромное спасибо!
--- Сообщения объединены---
По всякому пробовал, не работают эти коды!
 

Next

Регистрация
29.09.14
Сообщения
8,825
Симпатии
843
#5
В шаблоне message самый низ

Найти
Код:
    <xen:hook name="message_below" params="{xen:array 'post={$message}','message_id={$messageId}'}" />
 
    <xen:include template="ad_message_below" />
 
</li>
и сделать так
Код:
</li>
    <xen:hook name="message_below" params="{xen:array 'post={$message}','message_id={$messageId}'}" />
  
    <xen:include template="ad_message_below" />

Есть такой вариант еще Спец. пост, после первого сообщения в теме
 

JanP

Регистрация
16.04.16
Сообщения
74
Симпатии
2
#6
Thank you !!! )))
Разбираюсь потихонечку. Буду устанавливать "Спец.пост....", но тоже вопрос. Там есть возможность настроить так, чтоб пост могли видеть только незарегистрированные пользователи, пользователи у которых меньше Х сообщении? И чтоб он отображался на всех страницах форума (в темах) после первого сообщения.
Вот как хочу сделать! )))
 

JanP

Регистрация
16.04.16
Сообщения
74
Симпатии
2
#8
Через условия переменных.
Это понятно.
Сейчас сообщение инфо.бот отображается после 1-го сообщения, но только на первой странице темы. Чтоб отображалось ещё и на каждой странице темы нужно вставить код:
<xen:if is="{$post.position} % {$xenOptions.messagesPerPage} == x AND !{$message.conversation_id}">
Этот текст будет показан после сообщения x на каждой странице темы
</xen:if>
и чтоб отображалось пользователям у которых меньше 3-х сообщений нужно вставить код:
<xen:if is="{$visitor.message_count} < 3">
Этот текст будет показан только пользователям, у которых менее x сообщений
</xen:if>
Но вот как объединить эти коды и в каком месте вставить в шаблон xfi_special_message? Вот над чем сейчас голову ломаю. :help:
--- Сообщения объединены---
В общем, все празднуют. :)
Подождём, может после праздников найдётся специалист, который поможет настроить плагин.
 
Последнее редактирование:

Holod

Регистрация
07.05.17
Сообщения
4
Симпатии
0
#9
Мм, спасибо, довольная полезная темка