XF 2.0 Разработка виджета TOP-Пользователь.

Версия XenForo
2.x.x

Giness

Проверенные
Сообщения
30
Реакции
7
Баллы
305
Добрый день, форумчане. Подскажите такой вопрос. Есть виджет "Пользователи онлайн".
HTML:
<xf:if is="$options.staffOnline">
    <xf:if contentcheck="true">
        <div class="block" data-widget-section="staffMembers"{{ widget_data($widget) }}>
            <div class="block-container">
                <h3 class="block-minorHeader"><a href="{{ link('members', null, {'key': 'staff_members'}) }}" rel="nofollow">{{ phrase('staff_online') }}</a></h3>
                <ul class="block-body">
                <xf:contentcheck>
                    <xf:foreach loop="$online.users" value="$user">
                        <xf:if is="$user.is_staff">
                            <li class="block-row">
                                <div class="contentRow">
                                    <div class="contentRow-figure">
                                        <xf:avatar user="$user" size="xs" />
                                    </div>
                                    <div class="contentRow-main contentRow-main--close">
                                        <xf:username user="$user" rich="true" />
                                        <div class="contentRow-minor">
                                            <xf:usertitle user="$user" />
                                        </div>
                                    </div>
                                </div>
                            </li>
                        </xf:if>
                    </xf:foreach>
                </xf:contentcheck>
                </ul>
            </div>
        </div>
    </xf:if>
</xf:if>

<div class="block" data-widget-section="onlineNow"{{ widget_data($widget) }}>
    <div class="block-container">
        <h3 class="block-minorHeader"><a href="{{ link('online') }}" rel="nofollow">{$title}</a></h3>
        <div class="block-body">
            <xf:if contentcheck="true">
                <div class="block-row block-row--minor">
                    <h4 class="block-textHeader block-textHeader--scaled">
                        {{ phrase('people_you_follow') }}
                    </h4>
                    <ul class="listHeap">
                        <xf:contentcheck>
                            <xf:if is="$options.followedOnline">
                                <xf:foreach loop="$online.users" value="$user">
                                    <xf:if is="in_array($user.user_id, $xf.visitor.Profile.following)">
                                        <li>
                                            <xf:avatar user="$user" size="xxs" img="true" />
                                        </li>
                                    </xf:if>
                                </xf:foreach>
                            </xf:if>
                        </xf:contentcheck>
                    </ul>
                </div>

                <div class="block-row block-row--minor">
                    <h4 class="block-textHeader block-textHeader--scaled">
                        {{ phrase('members') }}
                    </h4>
            <xf:else />
                <div class="block-row block-row--minor">
            </xf:if>

                <xf:if is="$online.users is not empty">
                    <ul class="listInline listInline--comma">
                        <xf:foreach loop="$online.users" value="$user"><xf:trim>
                            <li><xf:username user="$user" rich="true" class="{{ !$user.visible ? 'username--invisible' : '' }}" /></li>
                        </xf:trim></xf:foreach>
                    </ul>
                    <xf:if is="$online.counts.unseen">
                        <a href="{{ link('online') }}">{{ phrase('ellipsis_and_x_more', {'count': $online.counts.unseen}) }}</a>
                    </xf:if>
                <xf:else />
                    {{ phrase('no_members_online_now') }}
                </xf:if>
            </div>
        </div>
        <div class="block-footer">
            <span class="block-footer-counter">{{ phrase('online_now_x_members_y_guests_z',{
                'total': number($online.counts.total),
                'members': number($online.counts.members),
                'guests': number($online.counts.guests)})
            }}</span>
        </div>
    </div>
</div>
Я хочу на его основе сделать виджет "ТОП-пользователь".
Это скажем так будет группа пользователей. Но вот вопрос в том, что я не могу понять, как мне сделать выборку этих пользователей.
Группа допустим 20.
На сколько я понимаю, то выбор происходит тут: <xf:if is="$user.is_staff"> Но если я вставляю вместо этого: <xf:if is="$user.isMemberOf(20)">, то ничего не выводит. Кто объяснит, почему?
 
Последнее редактирование модератором:
Giness,
На форуме, на котором люди занимаются разработкой модулей - мне в ответ прилетает "Документация по xenforo" И это лайкает администратор. Это прям сильно. Простой вопрос - простой ответ. Мог бы тогда уже и ссылку на документацию по HTML скинуть, чтоб наверняка
 
Giness, какой вопрос, такой и ответ.
Никто разжёвывать документацию тут не будет.
Обычный пользователь не лезет в такое, а если надо, то идёт в раздел по поиску исполнителя. Тут же сам хочешь сделать, но на посыл в документацию обижаешься.
 
Giness, если топ, то по каким параметрам, по идеи есть из коробки виджет статистики пользователей, там можно выбрать по каким параметрам этот топ, в условиях отображения указать условие для групп.
 
Giness, начнём с того, что это - нестандартная задача.

Отсюда вытекает два варианта.
  1. Изучайте сами.
  2. Поиск исполнителя
Помимо, уже LenaTDDS и Atikin дали ответ.

Всё что я могу сказать, это читайте документацию + пользуйтесь поиском.


 
Giness, если топ, то по каким параметрам, по идеи есть из коробки виджет статистики пользователей, там можно выбрать по каким параметрам этот топ, в условиях отображения указать условие для групп.
Спасибо за "нормальный" ответ. Видимо все же есть на форуме адекватные люди.
Параметр всего один. <xf:if is="$user.isMemberOf(20)"> Группа под номером 20.
Но когда я делаю это условие, то все пропадает. Хотя если такое же условие я ставлю например на запрет отображения рекламы для этой группы пользователей то все работает.

Giness, начнём с того, что это - нестандартная задача.

Отсюда вытекает два варианта.
  1. Изучайте сами.
  2. Поиск исполнителя
Помимо, уже LenaTDDS и Atikin дали ответ.

Всё что я могу сказать, это читайте документацию + пользуйтесь поиском.


Спасибо. Не все, но помогло.

Giness, интересно, где сказано что тут разрабатывают модули?
Зачем задавать вопросы, которые совершенно уводят от вопроса самой темы?
 
Зачем задавать вопросы, которые совершенно уводят от вопроса самой темы?
А зачем утверждать, что на этом форуме
люди занимаются разработкой модулей
, когда это не так? Здесь буквально единицы что-то понимают в разработке, и публикуют, но никак не 15% и больше от всего форума (если учитывать общее число пользователей).
 
Да, а ещё в зависимости от дополнений и вариантов настройки форума, даже стандартные методы могут изменять своё поведение. Плюс в разных местах переменная с одним названием может содержать разные объекты
 
Giness,
OFFTOP

не нужно писать то, чего не знаешь. Большинство здесь чтобы скачать плагины/стили, а не делать их

перечитал сто раз и не понял зачем это сообщение вообще было нужно.
А зачем утверждать, что на этом форуме

, когда это не так? Здесь буквально единицы что-то понимают в разработке, и публикуют, но никак не 15% и больше от всего форума (если учитывать общее число пользователей).
Но есть же эти "единицы", которые делают свое дело и передают свои знания другим. Вот я и задаю свой вопрос им. Ну и если есть те, кто вообще понимают о чем речь, так же могу помочь.
Да, а ещё в зависимости от дополнений и вариантов настройки форума, даже стандартные методы могут изменять своё поведение. Плюс в разных местах переменная с одним названием может содержать разные объекты
Мне нужно всего лишь, чтобы показ был тех пользователей в том виджете, которые относятся к определенной группе.

Спасибо всем. Если тут нет вариантов решения, на форуме - можете закрывать тему. Решение найду сам.
 
Но есть же эти "единицы", которые делают свое дело и передают свои знания другим. Вот я и задаю свой вопрос им. Ну и если есть те, кто вообще понимают о чем речь, так же могу помочь.
Нет, Вы не им задаёте вопрос. Этот раздел нацелен на вопросы от обычных пользователей - обычным пользователям. Для помощи по таким специфическим вопросам есть отдельный раздел.
 
Добрый день, форумчане. Подскажите такой вопрос. Есть виджет "Пользователи онлайн".
HTML:
<xf:if is="$options.staffOnline">
    <xf:if contentcheck="true">
        <div class="block" data-widget-section="staffMembers"{{ widget_data($widget) }}>
            <div class="block-container">
                <h3 class="block-minorHeader"><a href="{{ link('members', null, {'key': 'staff_members'}) }}" rel="nofollow">{{ phrase('staff_online') }}</a></h3>
                <ul class="block-body">
                <xf:contentcheck>
                    <xf:foreach loop="$online.users" value="$user">
                        <xf:if is="$user.is_staff">
                            <li class="block-row">
                                <div class="contentRow">
                                    <div class="contentRow-figure">
                                        <xf:avatar user="$user" size="xs" />
                                    </div>
                                    <div class="contentRow-main contentRow-main--close">
                                        <xf:username user="$user" rich="true" />
                                        <div class="contentRow-minor">
                                            <xf:usertitle user="$user" />
                                        </div>
                                    </div>
                                </div>
                            </li>
                        </xf:if>
                    </xf:foreach>
                </xf:contentcheck>
                </ul>
            </div>
        </div>
    </xf:if>
</xf:if>

<div class="block" data-widget-section="onlineNow"{{ widget_data($widget) }}>
    <div class="block-container">
        <h3 class="block-minorHeader"><a href="{{ link('online') }}" rel="nofollow">{$title}</a></h3>
        <div class="block-body">
            <xf:if contentcheck="true">
                <div class="block-row block-row--minor">
                    <h4 class="block-textHeader block-textHeader--scaled">
                        {{ phrase('people_you_follow') }}
                    </h4>
                    <ul class="listHeap">
                        <xf:contentcheck>
                            <xf:if is="$options.followedOnline">
                                <xf:foreach loop="$online.users" value="$user">
                                    <xf:if is="in_array($user.user_id, $xf.visitor.Profile.following)">
                                        <li>
                                            <xf:avatar user="$user" size="xxs" img="true" />
                                        </li>
                                    </xf:if>
                                </xf:foreach>
                            </xf:if>
                        </xf:contentcheck>
                    </ul>
                </div>

                <div class="block-row block-row--minor">
                    <h4 class="block-textHeader block-textHeader--scaled">
                        {{ phrase('members') }}
                    </h4>
            <xf:else />
                <div class="block-row block-row--minor">
            </xf:if>

                <xf:if is="$online.users is not empty">
                    <ul class="listInline listInline--comma">
                        <xf:foreach loop="$online.users" value="$user"><xf:trim>
                            <li><xf:username user="$user" rich="true" class="{{ !$user.visible ? 'username--invisible' : '' }}" /></li>
                        </xf:trim></xf:foreach>
                    </ul>
                    <xf:if is="$online.counts.unseen">
                        <a href="{{ link('online') }}">{{ phrase('ellipsis_and_x_more', {'count': $online.counts.unseen}) }}</a>
                    </xf:if>
                <xf:else />
                    {{ phrase('no_members_online_now') }}
                </xf:if>
            </div>
        </div>
        <div class="block-footer">
            <span class="block-footer-counter">{{ phrase('online_now_x_members_y_guests_z',{
                'total': number($online.counts.total),
                'members': number($online.counts.members),
                'guests': number($online.counts.guests)})
            }}</span>
        </div>
    </div>
</div>
Я хочу на его основе сделать виджет "ТОП-пользователь".
Это скажем так будет группа пользователей. Но вот вопрос в том, что я не могу понять, как мне сделать выборку этих пользователей.
Группа допустим 20.
На сколько я понимаю, то выбор происходит тут: <xf:if is="$user.is_staff"> Но если я вставляю вместо этого: <xf:if is="$user.isMemberOf(20)">, то ничего не выводит. Кто объяснит, почему?
У тебя не вставляется, потому что в начале код ссылается на опцию "команда форума" и staff отвечает за это. Бери за основу второй код или вот
<xf:if contentcheck="true">
<div class="block" data-widget-section="onlineNow"{{ widget_data($widget) }}>
<div class="block-container">
<h3 class="block-minorHeader"><a href="{{ link('online') }}">{{ phrase('Администрация проекта') }}</a></h3>
<ul class="block-body">
<xf:contentcheck>
<xf:if is="$options.followedOnline">
<xf:foreach loop="$online.users" value="$user">
<xf:if is="$user.isMemberOf()">
<li class="block-row">
<div class="contentRow">
<div class="contentRow-figure">
<xf:avatar user="$user" size="xs" />
</div>
<div class="contentRow-main contentRow-main--close">
<xf:username user="$user" rich="true" />
<div class="contentRow-minor">
<xf:usertitle user="$user" />
</div>
</div>
</div>
</li>
</xf:if>
</xf:foreach>
</xf:if>
</xf:contentcheck>
</ul>
</div>
</div>
</xf:if>

Там цифра 6 стоит, это от моей группы пользователей. Замени на свою и все должно заработать.
 
Jdatiko, все равно ничего не заработает. Ну или не заработает так, как нужно ТС. Тут только пилить аддон с выборкой X юзеров в группе Y, а не из онлайна.
 
Jdatiko, все равно ничего не заработает. Ну или не заработает так, как нужно ТС. Тут только пилить аддон с выборкой X юзеров в группе Y, а не из онлайна.
Спорно. У меня работает, но из выборки онлайна. Я сейчас сижу и вожусь, чтоб выводить вот это, только вместо гостей и т.д., выводить стажер, хелпер и прочее. Весь мозг сломал) не понимаю код с x, z,y
 

Вложения

  • 1607215508169.png
    1607215508169.png
    3 KB · Просмотры: 19
Не спорно. У ТС и вас диаметрально разные задачи. А если у вас есть конкретный, а не абстрактный вопрос, задайте его в нужной теме и вам ответят
(Если смогут)
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу