Jump to content


Photo
* * * * * 2 votes

Модификация элемента JBGallery

рецепт jbzoo 2.0+ хак

5 replies to this topic

#1 Cheren-dow

Cheren-dow
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 08 July 2014 - 11:17

Доброго времени суток. Буквально пару десятков минут назад мне надоело искать в больших списках папок ту самую в которой находятся изображения галереи для материала и я решил немного переделать элемент галереи 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.

  • 4
Изображение
 

#2 mr.varhola

mr.varhola
  • JBZoo User (rus)
  • User rate: 1.9
  • posts: 514
  • topics: 116

Posted 16 February 2015 - 14:54

сайт\templates\selling-flowers\html\jbzoo\elements\jbgallery\jbgallery.php

у меня в шаблоне нету такого файла))

подскажите где его искать в недрах jbzoo

нашел похожий по названию файл тут:  \media\zoo\applications\jbuniversal\elements\jbgallery\tmpl\jbgallery.php

но по содержимому в нем нету описанных выше методов.


нашел, сразу как-то не заметил, на уровень выше того пути что я написал :)


  • 0

#3 Cheren-dow

Cheren-dow
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 16 February 2015 - 15:09

user_mrvarhola, да все верно файл должен быть в

\media\zoo\applications\jbuniversal\elements\jbgallery\ 

  • 0
Изображение
 

#4 Na_uM

Na_uM
  • JBZoo User (rus)
  • User rate: 15.9
  • posts: 782
  • topics: 61

Posted 16 February 2015 - 18:52

к нему бы еще пагинацию "с коробки" вот тогда бы запели)


  • 0

#5 Cheren-dow

Cheren-dow
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 17 February 2015 - 01:31

Na_uM, хорошая идея. Нужно подумать как реализовать.


  • 1
Изображение
 

#6 Cheren-dow

Cheren-dow
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 95.7
  • posts: 5060
  • topics: 31

Posted 17 February 2015 - 10:30

Na_uM, написал простенький рецепт по привязки pagination к элементу 


  • 0
Изображение
 





Also tagged with one or more of these keywords: рецепт, jbzoo 2.0+, хак

Click to return to top of page in style!