Пробуем и тестируем

Рецепты на все случаи жизни

Картинка jbimage в списке товаров и материалов в админке. Хак

Предупреждаю. Описание ниже используется для первой версии хака. Новую версию лучше скачайте сразу файлом. Там изменен баг при работе с несколькими элементами картинки в одном типе товара. Теперь берется только первый элемент по очереди в админке.

В ZOO достаточно много хорошего, чтобы рекомендовать его как конструктор контента для практически любого сайта. Но есть и недостатки. Один из них не гибкая, а собственно говоря вообще не настраиваемая административная часть.

Это я почувствовал, когда после наполнения магазина я получил каталог в котором первой картинко товара, а собственно говоря это картинка тизера, не во всех случаях являлось изображение товара.

Править это все дело в административной панели жутко не удобно. Приходится сравнивать картинки на фронте, и искать в админке. Что не радость. 

К чему это я? - правильно. Как видно из заголовка - будем добавлять картинки материала в админку.

правим следующий файл:

administrator\components\com_zoo\views\item\tmpl\default.php

В нем формируется нужная нам табличка. Примерно 52 строка отвечает за заголовок таблицы.

добавляем туда следуюбщий блок:


        app->html->_('grid.sort', 'image', 'a.image', @$this->lists['order_Dir'], @$this->lists['order']); ?>

Это будет заголовок столбца с картинкой. Получим нечто следующее.

          

Далее необходимо выцепить элемент картнки.

крутим до примерно строки 178

// type
$type = $this->application->getType($row->type);

 Примерно так она выглядит. После нее добавляем блок:

$typeofsearch = $this->app->zoo->getApplication()->getTypes()[$type]->config->elements;
$elements = $type->getElements();
$index = 0;                             
$imageelement = '';
        foreach ($elements as $element) {
                if ($element->config->type == 'jbimage') {
                        $imageelement = $element->identifier;
                }
        $index++;
        }
$preimage = $row->elements->$imageelement;
$preimage = $preimage[0]['file'];
$thumbInfo = $this->app->jbimage->resize($preimage, 80, 80);

Что это делает? Обясню. Так как у нас может быть много типов товара и у каждого само собой будет своя картинка по этому мы просто пересматриваем элементы в поисках элемента типа jbimage и выцепив их него ID используем его для вывода первой картинки.

После этого формирует ссылку с превьюшке размером 80 на 80 пикселей. (можно поменять на свое значение)

Далее чуть ниже ищем строки:

Меняем добавив блок с картинкой.

Указываем все ее опции и размеры.. тоже можно поменять на свои.

Вот и все. Сохраняем и заменяем существующий файлю Не забывая делать бекап.  Помним - это ХАК! при обновлении ZOO он может улететь.

Я прикрепил файлы к статье. Так что - можете просто заменить свой. Должно заработать. Из возможных проблем - может быть проблема если в итеме используется несколько картинок jbimage. Я не проверял, но по логике будет использвоаться последняя.

И до кучи страховая мантра - делайте бекапы! Хак не тестировался, работает у меня нормально. Но мало ли какой вред нанесет вашему проекту. Бекап прежде всего!

Удачи. 

Комментарии (1)

  • Ошибка

    02 ноября 2018 at 06:21 |
    Warning: Illegal offset type in /administrator/components/com_zoo/views/item/tmpl/default.php on line 185 Notice: Trying to get property 'config' of non-object in /administrator/components/com_zoo/views/item/tmpl/default.php on line 185 Notice:

    Отзыв

Оставить комментарий

Пожалуйста, войдите, чтобы комментировать.

Статус материала

  • 2017-01-09
  • 802
  • Требования: ZOO, JbZOO, Joomla
  • Версия JBZoo: Все версии
  • Раздел: Песочница
  • Метки: JbImage, Админка, Элемент
  • Скачать
  • Размер: 4.02 KB
  • Обновлён: 2017-01-10
  • Версия: 1.1
  • Скачали: 85
  • jomla
  • jbzoo
  • css3
  • html5
  • Java script
  • jquery
  • bootstrap
Мы находимся в Минске
работаем по всей РБ
app->html->_('grid.sort', 'image', 'a.image', @$this->lists['order_Dir'], @$this->lists['order']); ?>