Я использую в качестве одного из модулей сайта модуль "список материалов категории" и, в общем-то, он меня во всём устраивает, кроме одного - я хочу чтобы кроме вступительного текста он ещё выводил изображения из вступительного текста. Такой опции я нигде не нашёл. Как я понимаю, за вывод этого модуля отвечает шаблон в папке modules\mod_articles_category\tmpl Я пробовал добавлять туда вот этот код: Код (PHP): $images = json_decode($item->images); ... <?php if !empty($images->image_intro) and $params->get('image')) : ?> <div class="pull-left item-image"> <img src="<?php echo htmlspecialchars($images->image_intro); ?>" /> </div> <?php endif; ?> Результата никакого. Помогите, пожалуйста. P.S. Да, я знаю что можно сторонний модуль поставить, но хочется решить всё "своими силами".
А проверял, что лежит в массиве ? Код (CODE): var_dump($item); и шаблон модуля переопредели в свой шаблон
Код (PHP): echo var_dump($item->images); Показывает: Код (PHP): string(191)"{"image_intro":"images\/biopsy.png","float_intro":"","image_intro_alt":"","image_intro_caption":"","image_fulltext":"","float_fulltext":"","image_fulltext_alt":"","image_fulltext_caption":""}" При этом Код (PHP): echo var_dump($item->images->image_intro); ?> Выдаёт NULL Это да, как только отлажу вывод, всё сделаю. --- добавлено: 01.11.2014, первое сообщение размещено: 01.11.2014 --- О, получилось. Видимо я что-то не так писал при декодировании из JSON. Заработал вот такой код: Код (PHP): <?php $images = json_decode($item->images); ?> <?php if (!empty($images->image_intro)) :?> <div class="pull-left item-image"><img src="<?php echo htmlspecialchars($images->image_intro); ?>" /></div> <?php endif; ?> Осталось ещё придумать как бы автоматически миниатюры строить и было бы вообще супер.
Ну, чтобы можно было заливать в качестве "вступительного изображения" картинку любого размера, а в "списке материалов" оно бы отображалось нужным мне размером. Пока сделал это через стили, но ведь это не особо красивое решение.
<?php $images = json_decode($item->images); ?> <?php if (!empty($images->image_intro)) : $image_new = new JImage(htmlspecialchars($images->image_intro)); $image_new = $image_new->resize(100, 100, false, JImage::SCALE_INSIDE); ?> <div class="pull-left item-image"><img src="<?php echo $image_new; ?>" /></div> <?php endif; ?> Сейчас реализовывал эту же задачу, действовать надо немного иначе все таки: Код (PHP): <?php //создаем новый объект JImage $image = new JImage(htmlspecialchars($images->image_intro)); //получаем путь $path = $image->getPath(); //Уменьшаем изображение $newimg = $image->resize('250', '240', true, JImage::SCALE_OUTSIDE); //Сохраняем в ту же папку $newimg->toFile($path.'_s.jpg', IMAGETYPE_JPG); //Выводим echo $path.'_s.jpg'; ?> JImage::SCALE_FILL - Жестко подгонит под указанный размер JImage::SCALE_INSIDE - Высота будет уменьшена до указанной, ширина будет пропорционально уменьшена или увеличена JImage::SCALE_OUTSIDE - Ширина будет уменьшена до указанной, высота будет пропорционально уменьшена или увеличена http://api.joomla.org/cms-3/classes/JImage.html А вот так можно не только уменьшить изображение, но и обрезать его, чтобы у нас фотки всегда были четко указанного размера: Код (PHP): //создаем новый объект JImage $image = new JImage(htmlspecialchars($images->image_intro)); //получаем путь $path = $image->getPath(); //Уменьшаем изображение $newimg = $image->resize('245', '245', true, JImage::SCALE_OUTSIDE); //Узнаем растояние от левого края до обрезки $left = ($newimg->getWidth()-245)/2; // Обрезаем лишнее $newimg = $newimg->crop('245', '245', $left, '', true); //Сохраняем в ту же папку $newimg->toFile($path.'_s.jpg', IMAGETYPE_JPG); //Выводим echo $path.'_s.jpg';