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

Вывод в теме

Обновлено

Подключение

Хелпер доступен в шаблонах магазина как $wa->shop->ewshopcimgPlugin. Он возвращает ссылки и массивы данных; HTML-разметку добавляет тема.

Все вызовы заключайте в проверку версии плагина, как в примерах ниже. Дополнительно проверяйте результат, чтобы при отсутствии картинки не выводить пустой тег img.

В примерах $category — текущая категория с полями id и name, а $categories — переданный темой массив категорий. Используйте переменные, доступные в конкретном шаблоне.

getImage: ссылка на одну картинку

Аргументы по порядку:

Аргумент Назначение
category_id ID категории магазина
unique_id «Уникальный идентификатор группы», например default
size Строка размера с латинской x, например 64x64, 1300x0 или 0x370
retina Для обычной версии опустите аргумент. Для @2x передайте true

Первые три аргумента нужны для получения ссылки. Если они не переданы, группа или изображение отсутствуют либо выключен «Статус плагина», возвращается пустая строка.

{if !empty($wa->shop->ewshopcimgPlugin->version())}
    {$image = $wa->shop->ewshopcimgPlugin->getImage($category.id, 'default', '64x64')}
    {if !empty($image)}
        <img src="{$image|escape}" alt="{$category.name|escape}">
    {/if}
{/if}

Версия @2x

{if !empty($wa->shop->ewshopcimgPlugin->version())}
    {$image = $wa->shop->ewshopcimgPlugin->getImage($category.id, 'default', '64x64')}
    {$image_2x = $wa->shop->ewshopcimgPlugin->getImage($category.id, 'default', '64x64', true)}
    {if !empty($image)}
        <img src="{$image|escape}"
             {if !empty($image_2x)}srcset="{$image_2x|escape} 2x"{/if}
             width="64" height="64" alt="{$category.name|escape}">
    {/if}
{/if}

Нужна включённая настройка «Эскизы изображений @2x» и созданный файл этого размера. Сначала запрашивайте обычную версию: если её нет и разрешены произвольные размеры, при её создании формируется и @2x.

В текущей реализации четвёртый аргумент проверяется на отличие от null, поэтому false тоже выбирает @2x при включённой настройке. Для обычной картинки используйте вызов из трёх аргументов.

Для SVG размер не меняет адрес файла, отдельная версия @2x не создаётся. Размер отображения SVG задаёт HTML/CSS темы.

getImages: изображения массива категорий

Метод принимает аргументы categories, unique_id, size, depth. Дочерние категории должны находиться в ключе childs.

depth необязателен: при пропуске или null обходятся все доступные уровни. Значение 1 ограничивает обработку верхним уровнем переданного массива, 2 добавляет его непосредственных потомков, 3 — ещё один уровень.

Результат — плоский массив с ключами по ID категорий. В каждом элементе есть image; для растровых изображений при включённом @2x добавляется image_2x. Категории без картинки в выбранной группе не включаются. При выключенном «Статус плагина» возвращается пустой массив.

{if !empty($wa->shop->ewshopcimgPlugin->version())}
    {$category_images = $wa->shop->ewshopcimgPlugin->getImages($categories, 'default', '64x64', 3)}
    {foreach $categories as $item}
        {if !empty($category_images[$item.id].image)}
            <img src="{$category_images[$item.id].image|escape}"
                 {if !empty($category_images[$item.id].image_2x)}srcset="{$category_images[$item.id].image_2x|escape} 2x"{/if}
                 alt="{$item.name|escape}">
        {/if}
    {/foreach}
{/if}

Метод в этом примере собирает картинки до трёх уровней, а цикл показывает только верхний уровень. Для показа потомков используйте обход дерева вашей темы и обращайтесь к тому же массиву по ID.

Размеры и наличие файлов

Если размер отсутствует, но включены «Эскизы произвольных размеров», хелпер создаёт его из сохранённого изображения. Если настройка выключена, заранее добавьте размер в группу.

Непустая строка URL не подтверждает существование файла: при отключённой генерации ссылка может вести на отсутствующий эскиз. Проверьте открытие URL в браузере.

Ранее подключённые темы

В продукте сохранены статические методы shopEwshopcimgHelper::getImage() и shopEwshopcimgHelper::getImages() с теми же аргументами. Для новых подключений используйте объектный хелпер с проверкой версии, как в примерах выше: это позволяет теме проверять доступность плагина перед обращением к нему.