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

Вывод и оформление

Обновлено

Готовый вывод 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 не переносится в результат. Текст и фотографии берутся из самой записи, поэтому вложения исходной публикации внутри репоста могут отсутствовать.

Замена шаблона в теме

  1. Скопируйте файл плагина wa-apps/shop/plugins/ewshopvkposts/templates/actions/frontend/FrontendPosts.html.
  2. Поместите копию в корень используемой темы Shop-Script под именем ewshopvkposts_plugin.frontend_posts.html.
  3. Измените копию в теме и проверьте страницу с вызовом render().

Хелпер ищет этот файл в теме, определённой через waRequest::getTheme(). Если подходящий файл не найден, используется штатный шаблон плагина.

Шаблону передаются переменные $posts, $options, $group_name, $group_initial, $group_link, $title_text. Массив $options содержит параметры исходного вызова, а не полный набор сохранённых настроек.