Тэг для уменьшения картинки средствами системы

Понадобился тэг для уменьшения картинки, а точнее, для простого добавления на страницу превьюшки при клике на которую открывается большая картинка (типа lightbox, fancybox и тп).

С добавлением этого самого эффекта проблем нет - достаточно прикрутить соответствующую библиотеку и натравить ее на картинку (ссылку с картинкой). Проблема оказалась с генерацией картинки. Ну точнее - как средствами самой системы вывести картинку.

Покопав код вот что получилось: создадим тэг, например, 'boxImage' c содержанием, которое приводится ниже. Далее на любой странице его можно вызвать следующим образом: {boxImage src='путь к картинке относительно uploads/images' [class='дополнительные классы к ссылке'] [align='align для картинки']} - при этом, если у картинки не было превьюшки она создается.

$config = $GLOBALS['gCms']->GetConfig();
$imDir = '/lib/filemanager/ImageManager';
$root = $config['root_path'] . $imDir;

require_once($root . '/config.inc.php');
require_once($root . '/Classes/ImageManager.php');
$manager = new ImageManager($IMConfig);

$image = ltrim($params['src'], '/');
$thumb = $manager->getThumbnail($image);
if (strpos($thumb, 'thumbs.php?img') !== false) {
    $thumb = $imDir . '/' . $thumb;
}

$addClass = 'agfbx';
if (isset($params['class'])) {
    $addClass .= ' ' . $params['class'];
}
$addParams = '';
if (isset($params['align'])) {
    $addParams .= ' align="' . $params['align'] . '"';
}
echo "<a class="{$addClass}" href="uploads/images/{$image}" target="_blank">
<img src="{$thumb}" alt="" />
</a>";

Ну а дальше, подключаем любимый скрипт (у меня fancybox) и вешаем его на картинку:


$(function(){
    $('.agfbx').fancybox();
});
blog comments powered by Disqus