Здесь расскажу о своем способе сделать ресайз изображений для материалов Joomla. Сразу скажу, давно (несколько лет) не использовал Joomla, возможно (скорее всего) существуют готовые плагины для этой цели, не искал, решил попробовать такой вариант.
Решение простое, но это не готовый плагин, который можно установить из админки, настроить и использовать. Понадобится всего один PHP файл, который можно подключить в модуле, компоненте и получить изображение заданного размера плюс его вариант в Webp.
За основу взят класс Image из CMS Opencart. В каталоге images создается каталог cache, куда сохраняются миниатюры с сохранением пути и имен файлов. К имени файла добавляется размер файла. Ссылки на миниатюры получаются постоянными, не зависят от времени жизни кеша. Например:
- Оригинал: images/image.jpg
- Миниатюра 300x200 px: images/cache/images/lsnoimg-300x200.jpg
Файл image.php нужно немного отредактировать и сохранить в корень сайта (хотя думаю можно в любой каталог, не проверял). Здесь нужно указать свои значения:
Немного теории по Joomla. CMS позволяет создавать внутри основного шаблона в каталоге html стили для компонентов, модулей и плагинов.
Сделано это для возможности изменить стандартную разметку. Например, стандартный шаблон (стиль) материала лежит по пути "components/com_content/tmpl/article/default.php", что бы переделать его под себя, нужно скопировать этот файл в "templates/ШАБЛОН/html/com_content/article/default.php", где можно редактировать и изменения не будут затерты очередным обновлением.
Копиям можно присваивать отличные от "default" имена и выбирать нужный стиль в параметрах.
Для примера, возьму модуль "Последние материалы", в изначальном варианте это простой список материалов, без изображений. После измений будет выводить материалы с изображениями заданного в шаблоне размера. В конце статьи есть ссылка на готовый вариант.
Сначала скопирую в шаблон сайта стиль модуля "Последние материалы", оригинал находится по пути: "modules/mod_articles_latest/tmpl/default.php", копирую в "templates/ШАБЛОН/html/mod_articles_latest/default.php", далее все изменения будут здесь.
Стандартный код шаблона модуля (та часть, где будут основные изменения):
Для начала нужно подключить скопированный ранее файл image.php, внутри которого уже есть класс "Image" и функции "imgResize" и "imgWebp". Подключаем где то до foreach, у меня получилось так:
Далее изменю:
На такую конструкцию:
Теперь заменю следующее:
На:
Вот в общем то и все. Аналогично можно пробовать добавить в другие модули, компоненты.
Сейчас данный скрипт позволяет получить изображение заданных размеров. Если соотношение сторон оригинала отличается от конечного, оно будет уменьшено, размещено по центру, с белым фоном по краям (слева-справа, или сверху-снизу).
В дальнейшем планирую доработать, добавить обрезку и возможно что то еще. Если есть замечания, просьба написать в комментариях.
Так же можете скачать готовый шаблон модуля "Последние материалы" и посмотреть на итоговый результат.