В стандартной реализации Opencart не предусмотрен вывод производителя товара в категории, но в некоторых ситуациях он просто необходим. Например, интернет магазин продает шины или другие товары, которые многие отличают по бренду. И согласитесь, визуальное восприятие логотипа производителя в списке товаров помогает потенциальному покупателю найти то, что он искал.
Вывод товара в стандартном (default) шаблоне category.tpl построен как списком, так и сеткой. Переключаются эти режимы ссылкой в начале страницы, после переключения данные заносятся в куки (cookie) и при следующем посещении магазина или перехода в другие категории выбор запоминается до их очистки или переключения режима.
В таком случае вывод товаров происходит естественным путем на страницу и после этого javascript перестраивает элементы согласно выбору пользователя. Для добавления дополнительного поля (производителя, артикул, mpn и др.) надо внести изменения как в разметку, так и в javascript код внизу страницы.
Для добавления данных о производителе и его логотип в массив товаров открываем контроллер по адресу catalog/controller/product/category.php и и после строки в начале файла:
$this->load->model('catalog/category');
добавляем загрузку модели производителя строкой:
$this->load->model('catalog/manufacturer');
Далее ищем код формирования массива
$this->data['products'][] = array(
и перед ним вставляем
$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($result['manufacturer_id']); if ($result['image']) { $logo_image = $this->model_tool_image->resize($manufacturer_info['image'], 100, 60); } else { $logo_image = false; }
Обратите внимание на числа 100 и 60 – это параметры изображения, где 100 – длина, 60 – высота, их можно менять на любой другой размер. Далее чуть ниже находим
'name' => $result['name'],
После нее вставлям
'logo_title' => $manufacturer_info['name'], 'logo_image' => $logo_image,
Теперь наш массив, передаваемый на шаблон, включает имя производителя и его логотип.
Для вывода логотипа производителя в список и сетку вывода товаров в категории открываем файл шаблона catalog/view/theme/default/template/product/category.tpl и находим блок (div) с классом product-list в котором выводятся данные о товарах, а потом с этого блока «парсятся» для перестройки список-сетка. Далее в нужном месте для вывода логотипа бренда вставляем
' alt='' title=''>
После этого «естественный» вывод в шаблон у нас уже готов. Для добавления в сетку или список нам нужно отредактировать javascript функцию, которая формирует верстку для заданного вида. Для этого внизу страницы находим строку
function display(view) {
и в нужном месте до строки }else{ вставляем отображение логотипа
var logo = $(element).find('.logo').html(); if (logo != null) { html += '' + logo + ''; }
можно например вставить после строки:
html += '' + $(element).find('.name').html() + '';
Далее что бы логотип отображался в сетке надо эти же строки добавить уже после }else{ в нужное место, например, можно после строки
html += '' + $(element).find('.name').html() + '';
После такой доработки у нас в категории будут выводится логотипы производителя товара как в сетке так и в списке. Обратите внимание еще и на то, что при наведении на логотип у нас появляется всплывающее название бренда.