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

Вывод в теме

Обновлено

Готовый блок: render()

Разместите вызов в Smarty-шаблоне темы в том месте, где нужен плейлист. Число 1 замените ID из кода, показанного в редакторе плейлиста.

{if !empty($wa->shop->ewshopvkvideosPlugin->version())}
    {$wa->shop->ewshopvkvideosPlugin->render(1)}
{/if}

Метод render($playlist_id, $options = array()) возвращает HTML сохранённого плейлиста. Если ID не задан, плейлист отсутствует или у него нет видео, возвращается пустая строка.

Стандартный блок содержит название и описание плейлиста, сетку карточек, названия и превью видео. Описание ролика сокращается Smarty-модификатором truncate:120. После нажатия на превью создаётся iframe с плеером и параметром autoplay=1.

Второй аргумент $options передаётся в шаблон как массив options, но стандартный шаблон не использует его для настройки вида. Публичные параметры количества колонок, лимита видео или цвета в нём не реализованы.

Используйте числовой ID сохранённого плейлиста. Передача массива URL в render() в этой версии неработоспособна: соответствующая ветка вызывает отсутствующий в плагине метод.

Данные для собственного вывода: getPlaylist()

Метод getPlaylist($playlist_id, $options = array()) возвращает массив playlist и videos. При отсутствии плейлиста возвращает пустой массив. Второй аргумент не меняет выборку.

{if !empty($wa->shop->ewshopvkvideosPlugin->version())}
    {$data = $wa->shop->ewshopvkvideosPlugin->getPlaylist(1)}
    {if !empty($data.videos)}
        <h2>{$data.playlist.name|escape}</h2>
        <ul>
            {foreach $data.videos as $video}
                <li>
                    <a href="{$video.url|escape}" target="_blank" rel="noopener noreferrer">
                        {$video.title|escape}
                    </a>
                </li>
            {/foreach}
        </ul>
    {/if}
{/if}

У playlist доступны в том числе id, name, description и исходный текст video_urls.

Поле элемента videos Содержание
url Сохранённая исходная ссылка на ролик
title Полученное название; если его нет — Видео VK и идентификатор ролика
description Описание ролика или пустая строка
image URL превью или пустая строка
player URL встроенного плеера или пустая строка

Данные читаются из базы. Сам вызов getPlaylist() не обращается к VK за новыми метаданными. Порядок видео не гарантирован: метод модели читает записи без явного ORDER BY.

Переопределение шаблона

Исходный шаблон в установленном плагине:

wa-apps/shop/plugins/ewshopvkvideos/templates/actions/frontend/FrontendVideos.html

Скопируйте его в корень используемой темы под именем:

ewshopvkvideos_plugin.frontend_videos.html

Для темы магазина путь будет таким:

wa-apps/shop/themes/<theme_id>/ewshopvkvideos_plugin.frontend_videos.html

Для шорткода в записи блога:

wa-apps/blog/themes/<theme_id>/ewshopvkvideos_plugin.frontend_videos.html

<theme_id> — идентификатор темы. Плагин проверяет наличие файла в теме, определённой текущим запросом; если его нет, использует исходный шаблон.

При вызове render() доступны переменные playlist, videos, options. Обработчик шорткода блога явно передаёт только playlist и videos; для общего шаблона не рассчитывайте на наличие options.

Стили и JavaScript стандартного блока находятся прямо в FrontendVideos.html. При изменении разметки сохраните или замените обработчик нажатия на превью, иначе встроенный плеер не появится. Сам хелпер render() ищет тему магазина; обработчик шорткода ищет тему блога.