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

Вывод изображений

Обновлено

Хелпер темы

Добавьте вызов в нужное место шаблона темы приложения «Блог». Единственный публичный метод специализированного хелпера — getImage($post_id, $unique_id, $size, $retina = null). Он возвращает строку с URL, а не HTML.

Параметр Значение
$post_id Числовой идентификатор записи. В примерах $post.id — идентификатор текущей записи в шаблоне.
$unique_id Строка из поля «Уникальный идентификатор группы», например default.
$size Размер в формате ширинаxвысота, например 315x0, 0x400, 600x400. Используйте латинскую x.
$retina Для обычного URL опустите аргумент; для @2x передайте true при включённых «Эскизах изображений @2x».

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

Обычное изображение

{if !empty($wa->blog->ewblogpimgPlugin->version())}
    {$image_url = $wa->blog->ewblogpimgPlugin->getImage($post.id, 'default', '315x0')}
    {if !empty($image_url)}
        <img src="{$image_url|escape}" alt="">
    {/if}
{/if}

В списке записей разместите этот фрагмент внутри существующего цикла темы и используйте переменную текущей записи. Обёртка проверяет доступность плагина, а внутренняя проверка не выводит пустой src, если изображение не найдено.

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

Произвольный размер

{if !empty($wa->blog->ewblogpimgPlugin->version())}
    {$image_url = $wa->blog->ewblogpimgPlugin->getImage($post.id, 'default', '600x400')}
    {if !empty($image_url)}
        <img src="{$image_url|escape}" width="600" height="400" alt="">
    {/if}
{/if}

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

Retina и srcset

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

{if !empty($wa->blog->ewblogpimgPlugin->version())}
    {$image_url = $wa->blog->ewblogpimgPlugin->getImage($post.id, 'default', '315x0')}
    {$image_2x_url = $wa->blog->ewblogpimgPlugin->getImage($post.id, 'default', '315x0', true)}
    {if !empty($image_url)}
        <img src="{$image_url|escape}"
             srcset="{$image_url|escape} 1x, {$image_2x_url|escape} 2x"
             width="315" alt="">
    {/if}
{/if}

Для 315x0 вариант @2x рассчитывается как 630x0. В URL он обозначается суффиксом @2x. Хелпер не проверяет отдельно наличие @2x-файла: если обычный эскиз уже существовал до включения настройки, одного запроса Retina недостаточно для создания удвоенного.

SVG и прежние темы

Для SVG метод возвращает URL загруженного SVG независимо от размера и параметра Retina. Обрезка, растровые эскизы и конвертация SVG в WebP не выполняются.

Статический метод blogEwblogpimgHelper::getImage() оставлен в коде для совместимости. В новых шаблонах используйте хелпер через $wa->blog->ewblogpimgPlugin с проверкой version(), как в примерах выше.