Как не создавать миниатюры для маленьких изображений — различия между версиями
| Velross (обсуждение | вклад) | Whoa (обсуждение | вклад)  | ||
| (не показаны 3 промежуточные версии 1 участника) | |||
| Строка 2: | Строка 2: | ||
| ---- | ---- | ||
| − | '''Задача:'''  | + | '''Задача:''' Не создавать миниатюры тех изображений, чей размер (по высоте или ширине) меньше заданного в макросе. | 
| '''Решение:''' | '''Решение:''' | ||
| Кастомизируем стандартный макрос передав в него дополнительный параметр. Если ширина или высота исходного изображения будет меньше максимально заданного, то из такого изображения мы не создаем миниатюру, иначе отправляем данные на макрос %system makeThumbnail()% для создания миниатюры.<br/> | Кастомизируем стандартный макрос передав в него дополнительный параметр. Если ширина или высота исходного изображения будет меньше максимально заданного, то из такого изображения мы не создаем миниатюру, иначе отправляем данные на макрос %system makeThumbnail()% для создания миниатюры.<br/> | ||
| − | Создадим свой собственный custom-ный макрос  | + | Создадим свой собственный custom-ный макрос. | 
| − | |||
| Код будет следующий: | Код будет следующий: | ||
Текущая версия на 13:47, 21 ноября 2018
Актуально для 2.9.6 (c TPL-шаблонизатором)
Задача: Не создавать миниатюры тех изображений, чей размер (по высоте или ширине) меньше заданного в макросе.
Решение:
Кастомизируем стандартный макрос передав в него дополнительный параметр. Если ширина или высота исходного изображения будет меньше максимально заданного, то из такого изображения мы не создаем миниатюру, иначе отправляем данные на макрос %system makeThumbnail()% для создания миниатюры.
Создадим свой собственный custom-ный макрос.
Код будет следующий:
//TODO: Write your own macroses here
public function my_thumbnail($path, $width, $hight, $template, $max) {
	if ($width>$hight){
		if($max>$width) {
			$my_thumbnail = "<img src=".$path." width=".$width." height=".$hight."";
		} else {
			$my_thumbnail = "%system makeThumbnail('.".$path."', '".$max."', 'auto', '".$template."')%";
		}
	} else {
		if($max>$hight){
			$my_thumbnail = "<img src=".$path." width=".$width." height=".$hight."";
		} else {
			$my_thumbnail = "%system makeThumbnail(.".$path.", auto, ".$max.", ".$template.")%";
		}
	}			
	return $my_thumbnail; 
}
Для использования его в tpl-шаблонах сделаем следующее: 
В вызове шаблона в папке tpls/data/ваш_шаблон.tpl указываем:
$FORMS['img_file'] = <<<END
    %custom my_thumbnail(%src%, %width%, %height%, имя_шаблона_для_вывода, 100)%
END;
100 - это значения высоты и ширины, которые нас интересуют для вывода (относительно которых будут проверяться размеры изображения)
Шаблон для вывода (находится в папке /templates/название_шаблона/tpls/thumbs) может быть таким:
<?php
$FORMS = Array();
$FORMS['image'] = <<<END
    <img src="%src%" width="%width%" height="%height%" 
END;
?>
То есть он подставит только начало кода для изображения, а окончание "некоторый код />" будет указано в шаблоне, где будет выводится изображение.
