_×

Создаем сниппет в ModX для вывода изображений (часть вторая)

Создаем сниппет в ModX для вывода изображений (часть вторая)

Как я и обещал, продолжим разработку сниппета для вывода изображений. Здесь мы рассмотрим назначение параметра orientation, а также выведем дополнительную информацию о файле.

Для начала добавим в наш, созданный ранее сниппет параметр orientation и установим для него значение по умолчанию all

Добавление параметра

Этот параметр будут содержать значение ориентации изображения, которое может быть  альбомной - album, страничной - page или любая - all

Далее найдем кусок куда где начинается вывод избражений, а именно это

if(!is_dir($file)){ ...
}else $count++;

Здесь на первом этапе добавим такую запись

list($width, $height) = getimagesize($path.$folder.$file);

В казанном выше кусочке кода функция getimagesize определяет размер изображения GIF, JPG, PNG, SWF, PSD, TIFF или BMP и возвращает размеры, тип файла и высоту/ширину текстовой строки.

Функция list() используется для того, чтобы присвоить списку переменных значения за одну операцию, т.е. получается что ы переменные width и height мы запишем ширину и высоту картинки соответсвенно.

Далее пробежимся по ориентациям и добавим следующие строки кода

if($orientation == "album"){
if($width>=$height) {
$ph = array('image'=>$folder.$file);
echo $modx->getChunk($tpl,$ph);
}else $count++;
}

если ширина картинки больше её высоты, то получается что картинка "лежит", т.е. ориентация альбомная. Если у нас при вызове указано &orientation=`album`, то мы выведим эту картинку

if($orientation == "page"){
if($height>$width) {
$ph = array('image'=>$folder.$file);
echo $modx->getChunk($tpl,$ph);
}else $count++;
}

если ширина картинки меньше её высоты, то получается что картинка "стоит", т.е. ориентация страничная. Если у нас при вызове указано &orientation=`page`, то мы выведим эту картинку

if($orientation == "all") {
$ph = array('image'=>$folder.$file);
echo $modx->getChunk($tpl,$ph);
}

 и в последнем сравнение, если у нас при вызове указано &orientation=`all` , то нам все равно какой у нее размер.

Также для информации можно вывести размеры картинки. Для этого необходимо переменные width и height передать в чанк, т.е.

$ph = array('image'=>$folder.$file,
'width'=>$width,
'height'=>$height);

и соответсвенно вывести их в любом месте, в пределах чанка разумеется, как [[+width]] и [[+height]]

На этом все, в следующий раз добавим фильтр для вывода картинок по определенному формату.

Теги: modx 14.01.2013