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

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

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

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

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

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

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

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

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

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

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

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

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

<th class="image">
	<?php echo $this->app->html->_('grid.sort', 'image', 'a.image', @$this->lists['order_Dir'], @$this->lists['order']); ?>
</th>

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

		<table class="list stripe">
			<thead>
				<tr>
					<th class="image">
						<?php echo $this->app->html->_('grid.sort', 'image', 'a.image', @$this->lists['order_Dir'], @$this->lists['order']); ?>
					</th>
					
					<th class="checkbox">
						<input type="checkbox" class="check-all" />
					</th>

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

крутим до примерно строки 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 пикселей. (можно поменять на свое значение)

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

<tr>
	<td class="checkbox">
		<input type="checkbox" name="cid[]" value="<?php echo $row->id; ?>" />
	</td>
	<td class="icon"></td>		

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

<tr>
	<td class="image">
		<img class="imageadminlist" alt="<?php echo $row->name; ?>" 
		title="<?php echo $row->name; ?>" 
	 src="/<?php echo $thumbInfo->url; ?>" width="80" height="80">
	</td>
					
	<td class="checkbox">
		<input type="checkbox" name="cid[]" value="<?php echo $row->id; ?>" />
	</td>
	<td class="icon"></td>	

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

Вот и все. Сохраняем и заменяем существующий файлю Не забывая делать бекап.  Помним - это ХАК! при обновлении 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:

    Отзыв

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

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

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

  • jomla
  • jbzoo
  • css3
  • html5
  • Java script
  • jquery
  • bootstrap
Мы находимся в Минске
работаем по всей РБ
  • mts+375 29 779-72-95viber
  • vel+375 44 779-72-95
  • email: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
  • skype: tirby_kat
Индивидуальный предприниматель
Кулак Сергей Николаевич
УНП: 590816946
зарегистрирован Зельвенским районным исполнительным комитетом
от 01.06.2010
Свяжитесь со мной