Вывод в теме и тексте
Обновлено
Автоматический блок через хук
Включите «Статус плагина», «Выводить по хуку» и «Вывод по хуку» у нужного списка. Плагин возвращает 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 используйте хук или вставку с переопределённым шаблоном. Хелпер не проверяет общие переключатели, не фильтрует связи по статусу публикации и не пересчитывает подборку. При собственной интеграции разработчик должен загрузить данные публикаций и отфильтровать недоступные для показа записи.