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

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

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

Post by von-hamster »

Зачем? Ответ здесь :) : http://von-hamster.ru/programmizm/php/c ... i-sistemy/

Коротко:

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

Ну и напоследок - последние строчки можно изменить как угодно, я просто привел то, что у меня получилось. Основная часть до строчки с $addClass.

Code: Select all

$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>";
Hippy-core
Forum Members
Forum Members
Posts: 76
Joined: Sat Dec 06, 2008 3:05 pm

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

Post by Hippy-core »

Хорошая работа!
Но есть ведь отличный модуль CGSmartImages, и плагин image...

В любом случае это отличная иллюстрация грамотной работы с API
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

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

Post by von-hamster »

Hippy-core wrote:Хорошая работа!
Но есть ведь отличный модуль CGSmartImages, и плагин image...

В любом случае это отличная иллюстрация грамотной работы с API
Ради такой простой задачи не имеет смысла подгружать целый модуль. В крайнем случае можно воспользоваться модулем Album - там уже встроены куча отображалок, и превьюшки генерятся при добавлении.

Плагин image - возможно. Но он вроде не генерит превьюшек, в описании, по крайней мере - я не увидел, а в код не лез (если ошибаюсь - подскажите).

По поводу грамотного использования - тоже не согласен - костыль на костыле. Удобнее было-бы что-то наподобии:

Code: Select all

$manager = $config = $GLOBALS['gCms']->GetImageManager();
$thumb = $manager->getThumbnail($params['src'][, width[, height]]);
...
А так приходится вытаскивать информацию по кусочкам :)
Hippy-core
Forum Members
Forum Members
Posts: 76
Joined: Sat Dec 06, 2008 3:05 pm

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

Post by Hippy-core »

Для превьюшки подойдет вполне:

Code: Select all

{image src="something.jpg" width=$preview_width height=$preview_height}
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

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

Post by von-hamster »

Hippy-core wrote:Для превьюшки подойдет вполне:

Code: Select all

{image src="something.jpg" width=$preview_width height=$preview_height}
А он сгенерит превьюшку? Смысл именно в генерации превьюшки, если ее нет
Hippy-core
Forum Members
Forum Members
Posts: 76
Joined: Sat Dec 06, 2008 3:05 pm

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

Post by Hippy-core »

Точно и не кеширует )
Post Reply

Return to “Russian - русский”