XF 2.2 Как применить forum.node_id для всего форума?

Версия XenForo
2.2.13

Parlevsky

Проверенные
Сообщения
200
Реакции
46
Баллы
730
Подскажите, пожалуйста, есть такая строчка:

<xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && in_array($forum.node_id, [2,3,4])">

forum.node_id, [2,3,4] отвечает за применение в определенном разделе форума. А как применить ко всем разделам? Пробовал удалять цифры и делать так:

<xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && in_array($forum.node_id, [])">

и так

<xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]))">

Но не работает.
 
Просто минус, что надо постоянно указывать новый узел где это необходимо применить. Не пойму, как сделать, чтобы для всех узлов это работало без их указания.
 
Просто минус, что надо постоянно указывать новый узел где это необходимо применить. Не пойму, как сделать, чтобы для всех узлов это работало без их указания.
Если не использовать условие для узлов совсем?
 
Parlevsky, привет, я сегодня все потестировал и смотри что получилось, я в шаблоне forum_view нашел строку с соответствующей фразой:
Код:
<div class="structItem-cell">{{ phrase('there_no_threads_in_this_forum') }}</div>
заменил ее на такую конструкцию:
Код:
<div class="structItem-cell">
    <xf:if is="$xf.visitor.user_id && !$xf.visitor.is_admin && !$xf.visitor.is_moderator && !$xf.visitor.isAwaitingEmailConfirmation()">
        Фраза для группы Registered
    <xf:elseif is="$xf.visitor.is_admin && $xf.visitor.is_moderator" />
        Фраза для групп Administrative и Moderating
    <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
        Фраза для ожидающих подтверждение по почте
    <xf:else />
        Фраза для остальных пользователей
    </xf:if>
</div>
и получил для админов и модераторов:
2024-01-29_095443.png
для просто зарегистрированных:
2024-01-29_095535.png
для ожидающих подтверждение по почте
2024-01-29_095513.png
для гостей:
2024-01-29_095607.png
Я не добавлял как у тебя дополнительную группу, но это можно добавить так:
Код:
<div class="structItem-cell">
    <xf:if is="$xf.visitor.user_id && !$xf.visitor.is_admin && !$xf.visitor.is_moderator && !$xf.visitor.isAwaitingEmailConfirmation() && !$xf.visitor.isMemberOf(5)">
        Фраза для группы Registered
    <xf:elseif is="$xf.visitor.is_admin && $xf.visitor.is_moderator && $xf.visitor.isMemberOf(5)" />
        Фраза для групп Administrative и Moderating
    <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
        Фраза для ожидающих подтверждение по почте
    <xf:else />
        Фраза для остальных пользователей
    </xf:if>
</div>
По скринам видно, что отображается все без указания форумов, но может ты делал в другом месте и п одругому.
 
Еще немного пояснений, к примеру условие $xf.visitor.isMemberOf([1,2]) не логично, как таковой группы с id 1 нет, это гости, они не группа, группа 2, это $xf.visitor.user_id, она основная у всех, если конечно у тебя правильно настроены группы, 3,4 - админ и модер, для них свое условие есть, но там тож, если они действительно админ и модер, а не просто выдана группа.
 
Немного еще поразмыслив с попкорном от модератора, сделал так:
Код:
<div class="structItem-cell">
    <xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && !$xf.visitor.isAwaitingEmailConfirmation()">
        Фраза для группы Registered и гостей
    <xf:elseif is="$xf.visitor.isMemberOf([3,4,5])" />
        Фраза для групп Administrative и Moderating и группы 5
    <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
        Фраза для ожидающих подтверждение по почте
    </xf:if>
</div>
работает, просто убрал общее условие для остальных, вроде уже нет в нем смысла. Был неправ с группой гостей 😭
 
Последнее редактирование:
Немного еще поразмыслив с попкорном от модератора, сделал так:
Код:
<div class="structItem-cell">
    <xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && !$xf.visitor.isAwaitingEmailConfirmation()">
        Фраза для группы Registered и гостей
    <xf:elseif is="$xf.visitor.isMemberOf([3,4,5]))" />
        Фраза для групп Administrative и Moderating и группы 5
    <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
        Фраза для ожидающих подтверждение по почте
    </xf:if>
</div>
работает, просто убрал общее условие для остальных, вроде уже нет в нем смысла. Был неправ с группой гостей 😭

Правильно работает?

Скобка не лишняя в конце - <xf:elseif is="$xf.visitor.isMemberOf([3,4,5]))" /> ?
 
Последнее редактирование:
Фраза для групп Administrative и Moderating
наличие этих флажков не означает, что пользователь действительно находится в этих группах
и наоборот - наличие группы не означает что пользователь действительно админ\модератор

проверки нужно писать под поставленную задачу

как таковой группы с id 1 нет, это гости, они не группа
наглая ложь
 
Немного еще поразмыслив с попкорном от модератора, сделал так:
Код:
<div class="structItem-cell">
    <xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && !$xf.visitor.isAwaitingEmailConfirmation()">
        Фраза для группы Registered и гостей
    <xf:elseif is="$xf.visitor.isMemberOf([3,4,5])" />
        Фраза для групп Administrative и Moderating и группы 5
    <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
        Фраза для ожидающих подтверждение по почте
    </xf:if>
</div>
работает, просто убрал общее условие для остальных, вроде уже нет в нем смысла. Был неправ с группой гостей 😭
Спасибо большое — работает, если просто форум, форум (предложение), а вот на Форум (статья) не работает почему-то 😟
 
Спасибо большое — работает, если просто форум, форум (предложение), а вот на Форум (статья) не работает почему-то
Работает если в настройках узла стиль отображения стандартный. А для других, в шаблоне forum_view_type_article
Найти:
Код:
                    <div class="message-cell message-cell--main">
                        {{ phrase('there_no_threads_in_this_forum') }}
                    </div>
Заменить:
Код:
                    <div class="message-cell message-cell--main">
                        <xf:if is="$xf.visitor.isMemberOf([1,2]) && !$xf.visitor.isMemberOf([3,4,5]) && !$xf.visitor.isAwaitingEmailConfirmation()">
                            Фраза для группы Registered и гостей
                        <xf:elseif is="$xf.visitor.isMemberOf([3,4,5])" />
                            Фраза для групп Administrative и Moderating и группы 5
                        <xf:elseif is="$xf.visitor.isAwaitingEmailConfirmation()" />
                            Фраза для ожидающих подтверждение по почте
                        </xf:if>
                    </div>
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу