Несколько фокусов с CMS Joomla! Автогенерация и отображение эскизов фотоальбомов модулем RokBox
- Опубликовано:
- Автогенерация и отображение эскизов фотоальбомов модулем RokBox
- Доработка горизонтального меню-списка для динамического разворачивания подпунктов
- Единая кнопка «Сохранить изменения» для корзины Интернет-магазина VirtueMart
- Изменение/снятие ограничений на длину строки поиска и его попутная доработка
- Исправление ссылки на главную/домашнюю в горизонтальном меню старого стиля
- Модернизация сайтов на Joomla! старых версий 1.5/2.5 до актуальной 3.6
- Отображение заглушки «сайт в разработке» для всех и всего сайта для избранных
- Подсветка пункта меню типа «внешняя ссылка», или Как сделать ссылки на категории VirtueMart
- Преобразование адресов сайта в дружественные (SEF) для внешних нужд
- Реализация двуязычного сайта с постраничным переключением языков
- Удаление значка печати из списка статей при сохранении его на странице статьи
Автогенерация и отображение эскизов фотоальбомов модулем RokBox
RokBox – отличный дополнительный модуль для Joomla, позволяющий быстро организовать на сайте симпатичный просмотр картинок и фотографий. Особенно хорошо он ещё и тем, что сам, автоматически генерирует эскизы (миникартинки) фотоальбомов (размером 150х100 по умолчанию)… Проблема вся в том, что размеры автогенерируемых эскизов заданы жёстко, без учёта фактической ориентации и соотношения сторон оригинальной фотографии, что на практике приводит к получению абы как обрезанных миникартинок (например, минифото человека с обрезанной головой). 🙁
Конечно, эскизы можно сгенерировать самому, пакетной обработкой папки с фотографиями какой-нибудь программой-просмотрщиком (например, я делаю это бесплатным FastStone Image Viewer) и закачать их с соответствующим суффиксом (“_thumb” по умолчанию) в FTP-папку с оригинальными фотографиями. Однако и тут жёсткие настройки размеров эскизов RokBox всё испортят – при выводе эскизов они будут использованы в качестве жёстких значений параметров Width и Height тега <Img>, в результате чего мы получим эскизы с искажёнными пропорциями. 🙁
Чтобы решить проблему(-ы), потребуется вмешательство в код модуля. Благо, вмешательство минимальное:
/plugins/content/rokbox.xml
…
<param name="thumb_width" type="text" default="" label="Thumbnail width in px" description="This is the width of the generated thumbnail if one is not found with the set thumb extension"></param>
<param name="thumb_height" type="text" default="" label="Thumbnail height in px" description="This is the height of the generated thumbnail if one is not found with the set thumb extension"></param>
…
/plugins/content/rokbox.php
…
$thumb_width = $botParams->def('thumb_width', '');
$thumb_height = $botParams->def( 'thumb_height', '');
…
$rd->loadImage($image_filename);
if ($image_width > $image_height)
{
$new_image_width = 150;
$new_image_height = round ($image_height / $image_width * $new_image_width);
}
else
{
$new_image_height = 150;
$new_image_width = round ($image_width / $image_height * $new_image_height);
};
…
Конечно, тут меня можно упрекнуть в том, что я тоже использую жёстко заданные размеры эскизов (150 пикселей по большей стороне), однако автогенерируемые эскизы получаются у меня не обрезанными, а полностью соответствующими оригинальным фотографиям, и отображаются они без искажения пропорций – это для моей задачи было главным. Желающие могут доработать моё решение, чтобы размеры эскизов можно было всё-таки задавать через административный веб-интерфейс в настройках модуля (буду благодарен, если кто-то в виде комментария предложит тут свою доработку).