[XenCustomize] News Publisher: Home Page, Portal & CMS

[XenCustomize] News Publisher: Home Page, Portal & CMS 2.3.9

Нет прав для скачивания

Zero-cold

Проверенные
Сообщения
41
Решения
1
Реакции
74
Баллы
720
Zero-cold добавил(а) новый ресурс:

[XenCustomize] News Publisher: Home Page, Portal & CMS 2.3.9 - Мощная новостная CMS для XenForo с уникальными макетами, современным дизайном и новостей в индексе.

XenCustomize News Publisher для XenForo!​

Представляем вам XenCustomize News Publisher для XenForo! Этот мощный и многофункциональный аддон создает динамическую новостную ленту на вашем форуме XenForo. В основе этого аддона лежит инновационный индекс новостей по категориям, который предлагает удобный и понятный способ отображения ваших новостей. В отличие от обычных дисплеев со смешанным контентом и разбивкой на страницы, индекс по категориям представляет новости в...

Узнать больше об этом ресурсе...
 
Изучив на офе, что могу сказать. Очень вкусно выглядит, надо поковырять.
 
Что-то я разочаровался... он строго для 2.3. Для поддержки 2.2 видимо версия ниже нужна, а её нет.
По факту это отдельная страница 1 в 1 как XFRM, но со своими визуальными примочкам и подачи, следовательно и индексация будет как в XFRM, как проверил по коду. В принципе, идея неплохая, но когда у вас уже есть новости как колонка форума, то подвязать никак, нужно создавать по новой с этим плагином. За это жирный минус. Так что фаворит AMS остается. А так, любопытная подача, но увы мне она не понравилась. Может кому зайдёт. Я уже понадеялся заменить Home Blog этим, но увы, облом.
 

Вложения

  • Снимок экрана 2025-07-29 194051.png
    Снимок экрана 2025-07-29 194051.png
    42.6 KB · Просмотры: 39
  • Снимок экрана 2025-07-29 194751.png
    Снимок экрана 2025-07-29 194751.png
    62.1 KB · Просмотры: 37
  • Снимок экрана 2025-07-29 194730.png
    Снимок экрана 2025-07-29 194730.png
    54 KB · Просмотры: 28
  • Снимок экрана 2025-07-29 194721.png
    Снимок экрана 2025-07-29 194721.png
    10.3 KB · Просмотры: 32
  • Снимок экрана 2025-07-29 194501.png
    Снимок экрана 2025-07-29 194501.png
    146.3 KB · Просмотры: 33
  • Снимок экрана 2025-07-29 194446.png
    Снимок экрана 2025-07-29 194446.png
    239.2 KB · Просмотры: 34
  • Снимок экрана 2025-07-29 194433.png
    Снимок экрана 2025-07-29 194433.png
    156.1 KB · Просмотры: 33
  • Снимок экрана 2025-07-29 194123.png
    Снимок экрана 2025-07-29 194123.png
    51.5 KB · Просмотры: 31
  • Снимок экрана 2025-07-29 194057.png
    Снимок экрана 2025-07-29 194057.png
    58.6 KB · Просмотры: 34
Последнее редактирование:
Идея интересная, жаль что для 2.2 нету😟
 
Благодарю за плагин. На 2.3.6 работает отлично и данный плагин лучше чем то, что я хотел использовать в качестве новостей. Хочу немного узнать и обсудить. Вдруг кто-нибудь в курсе. Выложил на форум 2 тестовые новости, но не увидел, чтобы данные новости были засчитаны в общую статистику форума. Или данные новости не идут в общую статистику форума:?

По логике должно было быть 291 сообщение из-за 2 новых добавленных новости, но этого не произошло.
1753886856933.png

И в общей статистики должно было отобразиться 302 сообщения в общем.
1753886916382.png

Или в данном плагине совершенно другая политика подсчёта сообщений на форуме. Непосредственно в самом плагине, когда заходишь в раздел 2 новости в статистике отображаются.
1753887010322.png

Просто хотелось бы сделать так, чтобы все новости загруженные через плагин добавлялись в общую статистику каждого пользователя кто выложил, а так-же в общую статистику на всём форуме. Это как-то можно реализовать?
 
Последнее редактирование:
Shumasick, Быстрее всего не добавили то что на скрине (Автоматическое создание темы на форуме) в создании категории, поэтому и не засчитало как сообщение.
 

Вложения

  • Снимок экрана 2025-07-30.jpg
    Снимок экрана 2025-07-30.jpg
    87.1 KB · Просмотры: 10
Shumasick, Быстрее всего не добавили то что на скрине (Автоматическое создание темы на форуме) в создании категории, поэтому и не засчитало как сообщение.
Большое спасибо. Оказывается всё было намного проще чем я думал. Не знал как работает данная функция.
P.S. Оказывается и с плагином "Ресурсы" работает аналогично, а я всегда думал как это так здесь работает, что загружаешь ресурс и автоматически создаётся тема на форуме.

Хорошо, когда есть такие люди. Ценю!
 
Всем привет. Прошу вашей помощи, если кто-то знает как реализовать задуманное.

Добавление блока "Больше всего новостей" на страницу /members/
Версия XenForo: 2.3.6
Описание задачи:
  • Хочу добавить блок "Больше всего новостей" на страницу /members/, аналогичный существующим блокам ("Больше всего тем", "Больше всех сообщений").
1754331564470.png
  • Блок должен показывать пользователей с наибольшим количеством новостей из данного плагина. Также нужна ссылка "Больше всего новостей" в боковой панели навигации.
1754331580679.png

Что уже сделано(Не уверен правильно я делал или нет):
1. Проверил SQL-запрос для выборки пользователей с наибольшим количеством новостей:
SQL:
SELECT xf_user.user_id, xf_user.username, xf_user.avatar_date, COUNT(*) as news_count
FROM xf_xcu_nwp_news
JOIN xf_user ON xf_xcu_nwp_news.user_id = xf_user.user_id
WHERE xf_xcu_nwp_news.news_state = 'visible' AND xf_xcu_nwp_news.publish_date > 0
GROUP BY xf_xcu_nwp_news.user_id
ORDER BY news_count DESC
LIMIT 10;
Результат: например, пользователь Shumasick (user_id = 1) имеет 311 новостей.
2. Определены шаблоны:
- member_notable(Если это то, что нужно): отвечает за основной контент страницы /members/, включая блоки категорий.
- member_wrapper(Если это то, что нужно): отвечает за боковую панель с навигацией.
HTML:
<xf:title>{{ $active ? $active.title : phrase('notable_members') }}</xf:title>

<xf:wrap template="member_wrapper">
    <xf:set var="$pageSelected" value="{{ $active ? $active.member_stat_key : 'overview' }}" />
</xf:wrap>

<xf:macro id="metadata_macros::canonical_url" arg-canonicalUrl="{{ link('canonical:members', null, {'key': $active ? $active.member_stat_key : null }) }}" />

<xf:css src="member.less" />

<xf:if is="$userNotFound">
    <div class="blockMessage blockMessage--error blockMessage--iconic">{{ phrase('specified_member_cannot_be_found_enter_entire_name') }}</div>
</xf:if>

<xf:if is="$memberStats is empty">
    <div class="blockMessage">{{ phrase('no_notable_members_can_currently_be_shown') }}</div>
<xf:else />
    <section class="block">
        <div class="block-container">
            <xf:if is="$active">
                <ol class="block-body">
                    <xf:foreach loop="{$resultsData.{$active.member_stat_key}}" key="$userId" value="$data">
                        <li class="block-row block-row--separated">
                            <xf:macro id="member_list_macros::item"
                                arg-user="{$data.user}"
                                arg-extraData="{$data.value}"
                                arg-extraDataBig="{{ true }}" />
                        </li>
                    <xf:else />
                        <li class="block-row">{{ phrase('no_users_match_specified_criteria') }}</li>
                    </xf:foreach>
                </ol>
            <xf:else />
                <div class="block-body">
                    <ol class="memberOverviewBlocks">
                        <xf:foreach loop="$memberStats" key="$key" value="$memberStat">
                            <xf:macro id="overview_block"
                                arg-memberStat="{$memberStat}"
                                arg-results="{$resultsData.{$key}}" />
                        </xf:foreach>
                    </ol>
                </div>
            </xf:if>
        </div>
    </section>
</xf:if>

<xf:macro id="overview_block"
    arg-memberStat="!"
    arg-results="!"
    arg-showTitle="{{ true }}"
    arg-showFooter="{{ true }}">

    <xf:if contentcheck="true">
        <li class="memberOverviewBlock">
            <xf:if is="$showTitle">
                <h3 class="block-textHeader">
                    <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}"
                        class="memberOverViewBlock-title">{$memberStat.title}</a>
                </h3>
            </xf:if>
            <ol class="memberOverviewBlock-list">
                <xf:contentcheck>
                    <xf:foreach loop="$results" key="$userId" value="$data">
                        <li>
                            <xf:macro id="overview_row" arg-data="{$data}" />
                        </li>
                    </xf:foreach>
                </xf:contentcheck>
            </ol>
            <xf:if is="$showFooter">
                <div class="memberOverviewBlock-seeMore">
                    <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}">{{ phrase('see_more...') }}</a>
                </div>
            </xf:if>
        </li>
    </xf:if>
</xf:macro>

<xf:macro id="overview_row" arg-data="!">
    <div class="contentRow contentRow--alignMiddle">
        <div class="contentRow-figure">
            <xf:avatar user="$data.user" size="xs" />
        </div>
        <div class="contentRow-main">
            <xf:if is="$data.value">
                <div class="contentRow-extra contentRow-extra--large">{$data.value}</div>
            </xf:if>
            <h3 class="contentRow-title"><xf:username user="$data.user" rich="true" /></h3>
        </div>
    </div>
</xf:macro>
HTML:
<xf:sidenav>
    <div class="block">
        <div class="block-container">
            <h3 class="block-header">{{ phrase('members') }}</h3>
            <div class="block-body">
                <a class="blockLink {{ $pageSelected == 'overview' ? 'is-selected' : '' }}" href="{{ link('members') }}">{{ phrase('overview') }}</a>
                <xf:foreach loop="$memberStats" key="$key" value="$memberStat">
                    <a class="blockLink {{ $pageSelected == $key ? 'is-selected' : '' }}" href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}">{$memberStat.title}</a>
                </xf:foreach>
                <xf:if is="$xf.options.enableMemberList">
                    <a class="blockLink {{ $pageSelected == 'member_list' ? 'is-selected' : '' }}" href="{{ link('members/list') }}">{{ phrase('registered_members') }}</a>
                </xf:if>
            </div>
        </div>
    </div>
</xf:sidenav>
<xf:page option="sideNavTitle">{{ phrase('members') }}</xf:page>

<xf:widgetpos id="member_wrapper_sidenav" position="sidenav" />
{$innerContent|raw}

Заранее спасибо за помощь!
Добавление количества новостей в блок профиля пользователя в сообщениях
Версия XenForo: 2.3.6
Описание задачи:
Хочу добавить в блок профиля пользователя, который отображается в сообщениях на форуме (рядом с именем, титулом, баннерами, темами, сообщениями и т.д.), строку с количеством новостей, опубликованных пользователем через плагин XenCustomize News Publisher. Например, чтобы в блоке профиля отображалось: "Новости: 311" с ссылкой на страницу новостей пользователя (аналогично "Темы: 463" или "Сообщения: 625"). Блок должен быть добавлен в раздел, где уже есть "Темы", "Сообщения", "Реакции", "Баллы", "Возраст" и "Адрес".
1754332634077.png
1754332504573.png

Что мне известно:
1. В профиле пользователя есть информация о новостях в другом месте (например, на странице профиля пользователя: /news-publisher/authors/shumasick.1/), где указано количество новостей (например, 311 для пользователя shumasick).
2. SQL-запрос для получения количества новостей пользователя:
SQL:
SELECT user_id, COUNT(*) as news_count
FROM xf_xcu_nwp_news
WHERE news_state = 'visible' AND publish_date > 0 AND user_id = ?
GROUP BY user_id;
Этот запрос возвращает количество опубликованных новостей для конкретного пользователя (например, `user_id = 1`, `news_count = 311`).
3. Блок профиля в сообщениях, вероятно, находится в шаблоне message_macros, в секции `message-userExtras`, где отображаются данные вроде "Темы", "Сообщения", "Реакции" и т.д.

Что хочу сделать:
1. Добавить строку "Новости: [количество]" в блок профиля пользователя в сообщениях, рядом с другими данными (например, "Темы: 463", "Сообщения: 625").
1754332504573.png
2. Сделать количество новостей кликабельным, с ссылкой на страницу новостей пользователя (например, /news-publisher/authors/shumasick.1/).


Заранее спасибо за помощь!
 
Всем привет. Прошу вашей помощи, если кто-то знает как реализовать задуманное.

Добавление блока "Больше всего новостей" на страницу /members/

Описание задачи:
  • Хочу добавить блок "Больше всего новостей" на страницу /members/, аналогичный существующим блокам ("Больше всего тем", "Больше всех сообщений").
  • Блок должен показывать пользователей с наибольшим количеством новостей из данного плагина. Также нужна ссылка "Больше всего новостей" в боковой панели навигации.

Что уже сделано(Не уверен правильно я делал или нет):
1. Проверил SQL-запрос для выборки пользователей с наибольшим количеством новостей:
SQL:
SELECT xf_user.user_id, xf_user.username, xf_user.avatar_date, COUNT(*) as news_count
FROM xf_xcu_nwp_news
JOIN xf_user ON xf_xcu_nwp_news.user_id = xf_user.user_id
WHERE xf_xcu_nwp_news.news_state = 'visible' AND xf_xcu_nwp_news.publish_date > 0
GROUP BY xf_xcu_nwp_news.user_id
ORDER BY news_count DESC
LIMIT 10;

2. Определены шаблоны:
- member_notable(Если это то, что нужно): отвечает за основной контент страницы /members/, включая блоки категорий.
- member_wrapper(Если это то, что нужно): отвечает за боковую панель с навигацией.
HTML:
<xf:title>{{ $active ? $active.title : phrase('notable_members') }}</xf:title>

<xf:wrap template="member_wrapper">
    <xf:set var="$pageSelected" value="{{ $active ? $active.member_stat_key : 'overview' }}" />
</xf:wrap>

<xf:macro id="metadata_macros::canonical_url" arg-canonicalUrl="{{ link('canonical:members', null, {'key': $active ? $active.member_stat_key : null }) }}" />

<xf:css src="member.less" />

<xf:if is="$userNotFound">
    <div class="blockMessage blockMessage--error blockMessage--iconic">{{ phrase('specified_member_cannot_be_found_enter_entire_name') }}</div>
</xf:if>

<xf:if is="$memberStats is empty">
    <div class="blockMessage">{{ phrase('no_notable_members_can_currently_be_shown') }}</div>
<xf:else />
    <section class="block">
        <div class="block-container">
            <xf:if is="$active">
                <ol class="block-body">
                    <xf:foreach loop="{$resultsData.{$active.member_stat_key}}" key="$userId" value="$data">
                        <li class="block-row block-row--separated">
                            <xf:macro id="member_list_macros::item"
                                arg-user="{$data.user}"
                                arg-extraData="{$data.value}"
                                arg-extraDataBig="{{ true }}" />
                        </li>
                    <xf:else />
                        <li class="block-row">{{ phrase('no_users_match_specified_criteria') }}</li>
                    </xf:foreach>
                </ol>
            <xf:else />
                <div class="block-body">
                    <ol class="memberOverviewBlocks">
                        <xf:foreach loop="$memberStats" key="$key" value="$memberStat">
                            <xf:macro id="overview_block"
                                arg-memberStat="{$memberStat}"
                                arg-results="{$resultsData.{$key}}" />
                        </xf:foreach>
                    </ol>
                </div>
            </xf:if>
        </div>
    </section>
</xf:if>

<xf:macro id="overview_block"
    arg-memberStat="!"
    arg-results="!"
    arg-showTitle="{{ true }}"
    arg-showFooter="{{ true }}">

    <xf:if contentcheck="true">
        <li class="memberOverviewBlock">
            <xf:if is="$showTitle">
                <h3 class="block-textHeader">
                    <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}"
                        class="memberOverViewBlock-title">{$memberStat.title}</a>
                </h3>
            </xf:if>
            <ol class="memberOverviewBlock-list">
                <xf:contentcheck>
                    <xf:foreach loop="$results" key="$userId" value="$data">
                        <li>
                            <xf:macro id="overview_row" arg-data="{$data}" />
                        </li>
                    </xf:foreach>
                </xf:contentcheck>
            </ol>
            <xf:if is="$showFooter">
                <div class="memberOverviewBlock-seeMore">
                    <a href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}">{{ phrase('see_more...') }}</a>
                </div>
            </xf:if>
        </li>
    </xf:if>
</xf:macro>

<xf:macro id="overview_row" arg-data="!">
    <div class="contentRow contentRow--alignMiddle">
        <div class="contentRow-figure">
            <xf:avatar user="$data.user" size="xs" />
        </div>
        <div class="contentRow-main">
            <xf:if is="$data.value">
                <div class="contentRow-extra contentRow-extra--large">{$data.value}</div>
            </xf:if>
            <h3 class="contentRow-title"><xf:username user="$data.user" rich="true" /></h3>
        </div>
    </div>
</xf:macro>
HTML:
<xf:sidenav>
    <div class="block">
        <div class="block-container">
            <h3 class="block-header">{{ phrase('members') }}</h3>
            <div class="block-body">
                <a class="blockLink {{ $pageSelected == 'overview' ? 'is-selected' : '' }}" href="{{ link('members') }}">{{ phrase('overview') }}</a>
                <xf:foreach loop="$memberStats" key="$key" value="$memberStat">
                    <a class="blockLink {{ $pageSelected == $key ? 'is-selected' : '' }}" href="{{ link('members', null, {'key': $memberStat.member_stat_key}) }}">{$memberStat.title}</a>
                </xf:foreach>
                <xf:if is="$xf.options.enableMemberList">
                    <a class="blockLink {{ $pageSelected == 'member_list' ? 'is-selected' : '' }}" href="{{ link('members/list') }}">{{ phrase('registered_members') }}</a>
                </xf:if>
            </div>
        </div>
    </div>
</xf:sidenav>
<xf:page option="sideNavTitle">{{ phrase('members') }}</xf:page>

<xf:widgetpos id="member_wrapper_sidenav" position="sidenav" />
{$innerContent|raw}

Заранее спасибо за помощь!
Добавление количества новостей в блок профиля пользователя в сообщениях

Описание задачи:

Хочу добавить в блок профиля пользователя, который отображается в сообщениях на форуме (рядом с именем, титулом, баннерами, темами, сообщениями и т.д.), строку с количеством новостей, опубликованных пользователем через плагин XenCustomize News Publisher. Например, чтобы в блоке профиля отображалось: "Новости: 311" с ссылкой на страницу новостей пользователя (аналогично "Темы: 463" или "Сообщения: 625"). Блок должен быть добавлен в раздел, где уже есть "Темы", "Сообщения", "Реакции", "Баллы", "Возраст" и "Адрес".

Что мне известно:
1. В профиле пользователя есть информация о новостях в другом месте (например, на странице профиля пользователя: /news-publisher/authors/shumasick.1/), где указано количество новостей (например, 311 для пользователя shumasick).
2. SQL-запрос для получения количества новостей пользователя:
SQL:
SELECT user_id, COUNT(*) as news_count
FROM xf_xcu_nwp_news
WHERE news_state = 'visible' AND publish_date > 0 AND user_id = ?
GROUP BY user_id;

3. Блок профиля в сообщениях, вероятно, находится в шаблоне message_macros, в секции `message-userExtras`, где отображаются данные вроде "Темы", "Сообщения", "Реакции" и т.д.


Что хочу сделать:
1. Добавить строку "Новости: [количество]" в блок профиля пользователя в сообщениях, рядом с другими данными (например, "Темы: 463", "Сообщения: 625").
2. Сделать количество новостей кликабельным, с ссылкой на страницу новостей пользователя (например, /news-publisher/authors/shumasick.1/).


Заранее спасибо за помощь!
Никто не сможет помочь?
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу