Вывод логотипа производителя товара в категории

категория: , Дорабатываем


Опубликовано: 31.05.2015 Просмотров: 3038 Комментарии: 4


Вывод логотипа производителя товара в категории

В стандартной реализации Opencart не предусмотрен вывод производителя товара в категории, но в некоторых ситуациях он просто необходим.


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

Переключатель список — сетка в категории 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 в котором выводятся данные о товарах, а потом с этого блока «парсятся» для перестройки список-сетка. Далее в нужном месте для вывода логотипа бренда вставляем

<div class="logo"><img src="<?php echo $product['logo_image']; ?>" alt="<?php echo $product['logo_title']; ?>" title="<?php echo $product['logo_title']; ?>"></div>

После этого «естественный» вывод в шаблон у нас уже готов. Для добавления в сетку или список нам нужно отредактировать javascript функцию, которая формирует верстку для заданного вида. Для этого внизу страницы находим строку

function display(view) {

и в нужном месте до строки }else{ вставляем отображение логотипа

var logo = $(element).find('.logo').html();
if (logo != null) {
    html += '<div class="logo">' + logo + '</div>';
}

можно например вставить после строки:

html += '<div class="name">' + $(element).find('.name').html() + '</div>';

Вывод логотипа в сетке товаров в категории Opencart

Далее что бы логотип отображался в сетке надо эти же строки добавить уже после }else{ в нужное место, например, можно после строки

html += '<div class="name">' + $(element).find('.name').html() + '</div>';

После такой доработки у нас в категории будут выводится логотипы производителя товара как в сетке так и в списке. Обратите внимание еще и на то, что при наведении на логотип у нас появляется всплывающее название бренда.


Комментарии:


Фото комментатора

Антон 31.05.2015

Если в списке товаров в одном из брендов недоступно изображение, будет оишбки Notice: Undefined index: image catalog_controller_product_category.php и Undefined index: name catalog_controller_product_category.php
Администратор

Ответ for-opencart.com 31.05.2015

Для избежания ошибки надо вместо строки:

<div class="logo"><img src="<?php echo $product['logo_image']; ?>" alt="<?php echo $product['logo_title']; ?>" title="<?php echo $product['logo_title']; ?>"></div>

Ставить эту:

<?php if($product['logo_image']){ ?><div class="logo"><img src="<?php echo $product['logo_image']; ?>" alt="<?php echo $product['logo_title']; ?>" title="<?php echo $product['logo_title']; ?>"></div><?php } ?>

тогда у нас будет выполняться проверка, и если не будет изображения у одного из брендов, оно просто не будет выводится.

Фото комментатора

Div 22.08.2015

Спасибо, то что надо! Было бы круто задавать размеры логотипа через админку
Администратор

Ответ for-opencart.com 22.08.2015

Посмотрите по аналогии как сделаны размеры изображений в списке товаров - это же можно применить к логотипам.

Фото комментатора

xPLd 01.11.2015

Всплыл нюанс -- при отсутствии картинки у товара, логотип тоже не показывается.
Администратор

Ответ for-opencart.com 01.11.2015

Можно сделать что бы при отсутствии картинки ставилась стандартная заглушка no_image.jpg тогда все будет.

Фото комментатора

игорь 17.05.2017

А как сделать логотип кликабельным?
Администратор

Ответ for-opencart.com 17.05.2017

Обернуть его в ссылку.

Быстрый поиск

Похожее

  • Выбор опций в списке товаров

    Часто бывает, что продаваемый товар в интернет магазине не нуждается в отдельной странице. Вот как, например, гвозди. Им не надо отдельная страница

  • Дополнительные изображения товара в категории

    Бывают случаи, когда в списке товаров нужно кроме основного изображения вывести и дополнительные. Например, интернет-магазин фейерверков.

  • Добавление файла к товару

    В Opencart есть возможность закачки файлов через админку. Однако сделано это очень неудобно и дает возможность скачивать файл только с личного кабинета покупателя

  • Удаляем дубли страниц в Opencart

    В CMS Opencart очень много есть преимуществ перед аналогами. Однако эта система имеет и свои недостатки. Самым серьезным из которых, как я считаю, являются – дубли страниц.

  • Категории производителя

    В одном из проектов интернет-магазина керамики заказчик захотел видеть в функционале магазина «Вывод коллекций плитки определенного производителя».

Новое на сайте