Доброго времени суток. Буквально пару десятков минут назад мне надоело искать в больших списках папок ту самую в которой находятся изображения галереи для материала и я решил немного переделать элемент галереи JBGallery.
-=В чем идея?=-
Например, если у вас много папок в селекте и, возникает трудность в поиске, мы можем автоматически подхватить нужную нам папку с изображениями для определенного материала или выбрать нужную папку из представленного списка.
1. Открываем файл
сайт\templates\selling-flowers\html\jbzoo\elements\jbgallery\jbgallery.php
Находим метод hasValue и заменяем его на
public function hasValue($params = array()) { // init vars $value = $this->_data->get('value'); $directory = $this->config->get('directory'); $directory = JPATH_ROOT . '/' . trim($directory, '/') . '/' . trim($value, '/'); $item = $this->_item; $category = $this->_item->getPrimaryCategory(); $galDir = JPATH_ROOT . '/images/' . $item->type . '-gallery/' . $category->alias . '/' . $item->alias . '/'; if (!empty($value) && is_readable($directory) && is_dir($directory)) { return true; } if (is_dir($galDir) && is_readable($galDir)) { return true; } return false; }
Далее находим метод render и заменяем его на
public function render($params = array()) { $item = $this->_item; $category = $this->_item->getPrimaryCategory(); $galDir = JPATH_ROOT . '/images/' . $item->type . '-gallery/' . $category->alias . '/' . $item->alias . '/'; // init vars $this->_uri = JURI::base(); if ($this->_data->get('value')) { $this->_path = JPATH_ROOT . '/' . trim($this->config->get('directory'), '/') . '/' . trim($this->_data->get('value'), '/'); } else { $this->_path = $galDir; } // set params $parameter = $this->app->parameter->create() ->loadArray((array)$this->config) ->loadArray($params); // get thumbnails $thumbs = $this->_getThumbnails($parameter); // no thumbnails found if (!count($thumbs)) { return null; } // sort thumbnails $thumbs = $this->_sortThumbnails($thumbs, $parameter->get('order', 'asc')); // limit thumbnails to count $count = intval($parameter->get('count', 0)); if ($count > 0 && $count < count($thumbs)) { $thumbs = array_slice($thumbs, 0, $count); } // init template vars $rel = $galleryId = 'gallery-' . self::$galleryCount++; // render layout if ($layout = $this->getLayout()) { return self::renderLayout($layout, compact('thumbs', 'galleryId', 'rel')); } return null; }
И так что бы папка с изображениями автоматически подхватывалась вам нужно следовать следующей схеме
сайт/images/АЛИАС-ТИПА-МАТЕРИАЛА-gallery/АЛИАС-РОДИТЕЛЬСКОЙ-КАТЕГОРИИ/ПСЕВДОНИМ-МАТЕРИАЛА
и в конечную папку ложем изображения. Вот пример:
сайт/images/flavor-gallery/buket-s-rozami/nadezhda/
Если же при создании материала вы выберите папку то изображения будут выводится из выбранной вами папки.
Если вы боитесь за обновления можете переопределить элемент.
ВНИМАНИЕ!!!
- Будьте внимательны при замене файлов.
- Проверьте с начало на тестовом сайте а уже потом загружайте на рабочий сайт.
- Это решение(модификация) тестировалось на
Joomla: 3.3.1
JBZoo: 2.1.4 Pro
Zoo: 3.1.6, - Не забывайте - это решение(модификация) и при следующих обновлениях эти изменения могут пострадать.
- При появлении проблем Тех.Поддержка ответственности не несет.
Добавлено: 08.07.2014
Edited by Cheren-dow, 08 July 2014 - 11:18.