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