Вывод и оформление
Обновлено
Готовый вывод render()
Метод render($options = array()) возвращает HTML карточек. Вставьте вызов в нужное место шаблона витрины:
{if !empty($wa->shop->ewshopvkpostsPlugin->version())}
{$wa->shop->ewshopvkpostsPlugin->render()}
{/if}По умолчанию настройки определяются по текущей витрине. Если публикаций нет, произошла ошибка API или файл шаблона не найден, метод возвращает пустую строку.
Можно изменить параметры только для конкретного вызова, не сохраняя их в настройках:
{if !empty($wa->shop->ewshopvkpostsPlugin->version())}
{$wa->shop->ewshopvkpostsPlugin->render([
'count' => 3,
'include_reposts' => true,
'title_text' => 'Новости сообщества'
])}
{/if}Параметры методов
render() и getPosts() принимают один массив $options. Значения из него имеют приоритет над сохранёнными настройками.
| Ключ | Назначение |
|---|---|
storefront |
Идентификатор витрины в формате домен/маршрут, как в списке «Витрина»; general выбирает общие настройки. По умолчанию определяется текущая витрина |
group_identifier |
ID или короткий домен сообщества |
access_token |
Токен VK API; обычно берётся из настроек бэкенда |
count |
Количество запрашиваемых записей, 1–100; соответствует полю «Количество постов», но ключ вызова — именно count |
include_reposts |
Включение репостов: true или false |
cache_ttl |
Срок кэширования в секундах; 0 отключает кэш |
api_version |
Версия VK API |
group_name |
Отображаемое имя |
group_link |
Ссылка на группу |
title_text |
Заголовок блока |
Собственный вывод через getPosts()
Метод getPosts($options = array()) возвращает массив с ключами settings и posts. При отсутствии токена или источника, а также при перехваченной ошибке API возвращается пустой массив. Успешный запрос может вернуть структуру с пустым posts, например после исключения репостов.
{if !empty($wa->shop->ewshopvkpostsPlugin->version())}
{$data = $wa->shop->ewshopvkpostsPlugin->getPosts(['count' => 3])}
{if !empty($data.posts)}
<h2>{$data.settings.title_text|escape}</h2>
{foreach $data.posts as $post}
<article>
<strong>{$data.settings.group_name|escape}</strong>
<p>{$post.text|escape|nl2br}</p>
{if !empty($post.attachments.photos)}
<img src="{$post.attachments.photos[0].url|escape}" alt="" loading="lazy">
{/if}
<p>Лайки: {$post.stats.likes}; комментарии: {$post.stats.comments}</p>
{if !empty($post.url)}
<a href="{$post.url|escape}" target="_blank" rel="noopener">Читать полностью</a>
{/if}
</article>
{/foreach}
{/if}
{/if}Структура результата
| Поле | Содержимое |
|---|---|
settings.group_name |
Отображаемое имя после обработки пустого значения |
settings.group_link |
Ссылка на группу |
settings.title_text |
Заголовок после обработки пустого значения |
settings.group_initial |
Первая буква отображаемого имени |
posts |
Массив подготовленных публикаций |
Каждая публикация содержит:
| Поле | Содержимое |
|---|---|
id, from_id, owner_id |
Числовые идентификаторы публикации, автора и владельца стены |
date |
Дата публикации в формате Unix timestamp |
text |
Текст публикации без сокращения штатным шаблоном |
url |
Адрес публикации ВКонтакте; пустая строка, если нет owner_id или id |
attachments.photos |
Массив фотографий, каждая с полями url, width, height, type; выбирается размер с наибольшей шириной |
stats.likes, stats.comments, stats.reposts, stats.views |
Счётчики; при отсутствии значения — 0 |
is_repost |
Признак наличия copy_history |
Содержимое copy_history не переносится в результат. Текст и фотографии берутся из самой записи, поэтому вложения исходной публикации внутри репоста могут отсутствовать.
Замена шаблона в теме
- Скопируйте файл плагина
wa-apps/shop/plugins/ewshopvkposts/templates/actions/frontend/FrontendPosts.html. - Поместите копию в корень используемой темы Shop-Script под именем
ewshopvkposts_plugin.frontend_posts.html. - Измените копию в теме и проверьте страницу с вызовом
render().
Хелпер ищет этот файл в теме, определённой через waRequest::getTheme(). Если подходящий файл не найден, используется штатный шаблон плагина.
Шаблону передаются переменные $posts, $options, $group_name, $group_initial, $group_link, $title_text. Массив $options содержит параметры исходного вызова, а не полный набор сохранённых настроек.