Вывод в теме
Обновлено
Подключение
Хелпер доступен в шаблонах магазина как $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() с теми же аргументами. Для новых подключений используйте объектный хелпер с проверкой версии, как в примерах выше: это позволяет теме проверять доступность плагина перед обращением к нему.