К содержимому
Вывод в теме

Вывод в теме и тексте

Обновлено

Автоматический блок через хук

Включите «Статус плагина», «Выводить по хуку» и «Вывод по хуку» у нужного списка. Плагин возвращает HTML в footer события frontend_post. Тема Блога определяет, где и будет ли выведен этот блок.

Используются сохранённые связи. Непустые списки показываются с заголовком, названиями публикаций, датами и ссылками «Подробнее», открывающимися в новой вкладке. Удалённые и неопубликованные связанные записи не выводятся.

Вставка в текст записи

Для списка, связанного с текущей публикацией:

[ewblogrelated list=1]

Замените 1 на ID существующего списка. Код можно скопировать в панели «Связанные посты». Вставка использует сохранённые связи и не запускает автоподбор. Если список не существует, тег остаётся в тексте без замены.

Для конкретных записей без создания списка:

[ewblogrelated ids=73,67,71]

Замените числа на ID опубликованных записей. Для этой вставки порядок перечисления ID не закреплён кодом: результат формируется в порядке выдачи поиска Блога.

Используйте указанный синтаксис без кавычек и дополнительных параметров. Вставки обрабатываются событием prepare_posts_frontend. Их обработка не проверяет «Статус плагина», «Выводить по хуку» и «Вывод по хуку» списка.

При отсутствии опубликованных связанных записей стандартный шаблон не выводит содержимое списка. Не добавляйте текущую запись в ids: плагин пытается исключить её, а типы ID и крайние случаи требуют проверки на конкретной установке.

Свой шаблон в теме Блога

Создайте файл в корне активной темы дизайна приложения «Блог»:

Назначение Имя файла Доступные данные
Вывод через хук ewblogrelated_plugin.frontend_post.html $lists, $plugin_version, $plugin_settings
Вывод внутри текста ewblogrelated_plugin.frontend_post_text.html $list, $plugin_version

В шаблоне хука $lists содержит списки с включённым «Вывод по хуку». Каждый список содержит поля id, title, description, hook, posts_ids, posts и другие сохранённые поля списка. В posts передаются полные данные опубликованных записей, в частности title, datetime, link.

В шаблоне вставки list=... переменная $list содержит выбранный список с полными данными записей в posts. Для ids=... передаются только posts_ids и posts: заголовка или описания списка нет.

posts_ids — исходные ID связей или вставки; после фильтрации они могут не совпадать с фактически выведенными posts. Для отображения обходите posts.

Пример файла ewblogrelated_plugin.frontend_post.html:

{foreach $lists as $list}
    {if !empty($list.posts)}
        <section>
            <h2>{$list.title|escape}</h2>
            <ul>
                {foreach $list.posts as $related_post}
                    <li><a href="{$related_post.link}">{$related_post.title}</a></li>
                {/foreach}
            </ul>
        </section>
    {/if}
{/foreach}

Пример файла ewblogrelated_plugin.frontend_post_text.html:

{if !empty($list.posts)}
    <ul>
        {foreach $list.posts as $related_post}
            <li><a href="{$related_post.link}">{$related_post.title}</a></li>
        {/foreach}
    </ul>
{/if}

Поля записей передаются стандартному шаблону после поиска с escape=true; примеры используют их так же, как штатные шаблоны. Название списка экранируется отдельно. Оформление собственного шаблона задайте средствами темы.

Если файла переопределения нет, используются templates/actions/frontend/FrontendPost.html и FrontendPostText.html плагина.

Хелпер: получить списки и связи

Методы blogEwblogrelatedPluginViewHelper доступны через $wa->blog->ewblogrelatedPlugin:

Метод Что возвращает
getLists($post_id) Все списки для записи, включая списки с выключенным выводом по хуку; у каждого — posts_ids и posts
getListPosts($post_id, $list_id) Сохранённые строки связей одной записи и одного списка в порядке sort ASC

В отличие от данных шаблонов вывода, posts у хелпера — строки связей, а не полные публикации. Они содержат id связи, post_id, list_id, related_post_id, is_auto, score, create_datetime, sort. related_post_id — ID связанной публикации; id — ID связи.

Пример получения ID связанных записей в шаблоне страницы записи, где доступен $post.id:

{if !empty($wa->blog->ewblogrelatedPlugin->version())}
    {$related_lists = $wa->blog->ewblogrelatedPlugin->getLists($post.id)}
    {foreach $related_lists as $related_list}
        {* ID публикаций этого списка: $related_list.posts_ids *}
        {foreach $related_list.posts as $relation}
            {* ID связанной публикации: $relation.related_post_id *}
        {/foreach}
    {/foreach}
{/if}

Получение связей выбранного списка; замените 1 на нужный ID:

{if !empty($wa->blog->ewblogrelatedPlugin->version())}
    {$relations = $wa->blog->ewblogrelatedPlugin->getListPosts($post.id, 1)}
    {foreach $relations as $relation}
        {* $relation.related_post_id, $relation.is_auto, $relation.score *}
    {/foreach}
{/if}

Эти примеры получают данные, но не рисуют блок. Для готового HTML используйте хук или вставку с переопределённым шаблоном. Хелпер не проверяет общие переключатели, не фильтрует связи по статусу публикации и не пересчитывает подборку. При собственной интеграции разработчик должен загрузить данные публикаций и отфильтровать недоступные для показа записи.