Вывод в теме
Обновлено
Готовый блок: render()
Добавьте код в нужное место шаблона витрины Shop-Script:
{if !empty($wa->shop->ewshoptgpostsPlugin->version())}
{$wa->shop->ewshoptgpostsPlugin->render()}
{/if}Метод возвращает HTML блока. Если нет токена, username или постов, результат пустой. При отсутствии файла шаблона метод также возвращает пустую строку.
Пример с тремя постами и собственным заголовком:
{if !empty($wa->shop->ewshoptgpostsPlugin->version())}
{$wa->shop->ewshoptgpostsPlugin->render(['count' => 3, 'title_text' => 'Новости канала'])}
{/if}Стандартный шаблон содержит встроенные стили и адаптивную сетку от одной до четырёх колонок. Он показывает имя, дату, сокращённый текст и одну фотографию. Статистика в стандартном шаблоне не отображается.
Параметры render() и getPosts()
Оба метода принимают массив $options. Параметры вызова имеют приоритет над настройками выбранной витрины.
| Параметр | Назначение | Если не указан |
|---|---|---|
storefront |
Ключ витрины в формате домен + / + URL маршрута, включая *, если он есть в маршруте. Специальное значение general выбирает общие настройки. |
Текущая витрина. Если её настроек нет, используются общие. |
channel_username |
Username канала, с @ или без. |
«Username канала». |
bot_token |
Токен бота. Для обычного вывода храните его в настройках, а не в шаблоне. | «Токен Telegram-бота». |
count |
Число постов. Целое; при значении ≤ 0 используется 5, максимум — 100. |
«Количество постов». |
cache_ttl |
Время кэширования в секундах. 0 отключает кэш; отрицательное значение приводится к 0. |
«Кэш, секунд». |
channel_name |
Отображаемое имя. Пустая строка заменяется на Telegram. |
«Отображаемое имя». |
channel_link |
Ссылка из заголовка и имени. | «Ссылка на канал». |
title_text |
Заголовок блока. Пустая строка заменяется на отображаемое имя. | «Заголовок блока». |
Принудительный выбор общих настроек:
{if !empty($wa->shop->ewshoptgpostsPlugin->version())}
{$wa->shop->ewshoptgpostsPlugin->render(['storefront' => 'general'])}
{/if}Собственный вывод: getPosts()
Метод возвращает массив с ключами settings и posts. При отсутствии обязательных параметров или перехваченном исключении верхнего уровня возвращается пустой массив. Успешный результат может содержать пустой posts.
{if !empty($wa->shop->ewshoptgpostsPlugin->version())}
{assign var=tg_data value=$wa->shop->ewshoptgpostsPlugin->getPosts(['count' => 3])}
{if !empty($tg_data.posts)}
<h2>{$tg_data.settings.title_text|escape}</h2>
{foreach $tg_data.posts as $post}
<article>
<strong>{$tg_data.settings.channel_name|escape}</strong>
<p>{$post.text|escape|nl2br}</p>
{if !empty($post.attachments.photos.0.url)}
<img src="{$post.attachments.photos.0.url|escape}" alt="" loading="lazy">
{/if}
<a href="{$post.url|escape}" target="_blank" rel="noopener">Читать в Telegram</a>
</article>
{/foreach}
{/if}
{/if}В этом примере ссылка на публикацию выводится и у текстовых постов. Текст приходит без преобразования Telegram entities в HTML; пример экранирует его перед выводом.
Данные settings
| Ключ | Содержимое |
|---|---|
channel_name |
Отображаемое имя. |
channel_link |
Заданная ссылка на канал. |
title_text |
Итоговый заголовок. |
channel_initial |
Первая буква отображаемого имени. |
Данные одного элемента posts
| Ключ | Содержимое |
|---|---|
id |
message_id публикации в Telegram, целое число; это не внутренний ID строки базы. |
chat_id |
ID чата Telegram. |
date |
Время публикации, Unix timestamp. |
text |
text сообщения или caption фотографии, иначе пустая строка. |
url |
Адрес вида https://t.me/<username>/<message_id>. |
attachments.photos |
Пустой массив или массив с одной выбранной фотографией. |
stats.views |
Значение views входящего сообщения, иначе 0. |
stats.forwards |
Значение forward_from_message_id входящего сообщения, иначе 0. Это не счётчик пересылок. |
Элемент attachments.photos содержит file_id, file_unique_id, width, height, file_size, url. Поле url может быть пустым, если адрес получить не удалось. Плагин не делает отдельный запрос актуальной статистики просмотров. Полей media, views на верхнем уровне поста в этом формате нет.
Переопределение шаблона
Скопируйте файл плагина:
wa-apps/shop/plugins/ewshoptgposts/templates/actions/frontend/FrontendPosts.htmlВ корень активной темы Shop-Script под именем:
ewshoptgposts_plugin.frontend_posts.htmlПри обнаружении файла в активной теме render() использует его. Если файл не найден, применяется стандартный шаблон плагина.
| Переменная шаблона | Значение |
|---|---|
$posts |
Массив нормализованных публикаций. |
$options |
Переданные параметры вызова. |
$group_name |
Отображаемое имя. |
$group_initial |
Первая буква имени. |
$group_link |
Ссылка на канал. |
$title_text |
Заголовок блока. |
Эти переменные назначает render(); обёртка проверки версии нужна у вызова хелпера в теме, а не внутри самого переопределённого шаблона.
У стандартного шаблона CSS-классы начинаются с ewshopvkposts-, хотя это плагин Telegram. Учитывайте именно эти имена при изменении стилей.