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

Вывод в теме

Обновлено

Подключение

Добавьте код в шаблон темы в месте, где требуется изображение. Хелпер плагина доступен как $wa->menu->ewmenuimgPlugin. Все вызовы помещайте в проверку версии:

{if !empty($wa->menu->ewmenuimgPlugin->version())}
    {$menu_image = $wa->menu->ewmenuimgPlugin->getImage($item.id, 'default', '64x64')}
    {if !empty($menu_image)}
        <img src="{$menu_image|escape}" width="64" height="64" alt="">
    {/if}
{/if}

В примере $item — текущий пункт меню из вашего шаблона. Плагин не создаёт эту переменную и не добавляет разметку меню автоматически. Значение 'default' — идентификатор группы, а не её название.

getImage(): одна ссылка

getImage($item_id = null, $unique_id = null, $size = null, $retina = null)
Параметр Назначение
$item_id ID пункта приложения «Управление меню»
$unique_id Значение поля «Уникальный идентификатор группы»
$size Строка вида 64x64, 200x100, 200x0 или 0x100
$retina Опустите для обычного изображения; передайте true для версии @2x

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

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

Изображение для Retina

{if !empty($wa->menu->ewmenuimgPlugin->version())}
    {$menu_image = $wa->menu->ewmenuimgPlugin->getImage($item.id, 'default', '64x64')}
    {$menu_image_2x = $wa->menu->ewmenuimgPlugin->getImage($item.id, 'default', '64x64', true)}
    {if !empty($menu_image)}
        <img src="{$menu_image|escape}"
             srcset="{$menu_image_2x|escape} 2x"
             width="64" height="64" alt="">
    {/if}
{/if}

При включённых «Эскизы изображений @2x» второй вызов возвращает адрес эскиза с удвоенными размерами. Если настройка выключена, возвращается обычная ссылка. Для SVG оба вызова возвращают ссылку на оригинал.

Не передавайте false вместо пропущенного четвёртого параметра: текущая реализация выбирает @2x для любого значения, отличного от null, когда настройка @2x включена.

getImages(): ссылки для дерева меню

getImages($categories = null, $unique_id = null, $size = null, $depth = null)

Метод принимает массив пунктов с ключами id и, для вложенных пунктов, childs. Имена первого аргумента в коде не означают, что сюда нужно передавать категории Shop-Script: это дерево пунктов меню.

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

{if !empty($wa->menu->ewmenuimgPlugin->version())}
    {$menu_images = $wa->menu->ewmenuimgPlugin->getImages($menu, 'default', '64x64', 2)}
    {foreach $menu as $item}
        {if !empty($menu_images[$item.id]['image'])}
            <img src="{$menu_images[$item.id]['image']|escape}" width="64" height="64" alt="">
        {/if}
    {/foreach}
{/if}

Здесь $menu — уже полученный в теме массив пунктов. Пример выводит изображения верхнего уровня; для дочерних пунктов используйте их ID при обращении к тому же результату.

Результат — плоский массив по ID пункта:

ID пункта => [
    'image' => 'URL обычного изображения',
    'image_2x' => 'URL изображения @2x'
]

Ключ image_2x добавляется для растрового изображения при включённой настройке @2x. Для SVG есть только image. Пункты без загруженных изображений не включаются в результат.

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