Вывод картинок к категориям на главной странице?

Необходимо вывести на главной странице к каждой категории, не только название, но и картинку , которая добавляется к категории через админ-панель. Как это реализовать в OpenCart 2.x?
  • Вопрос задан
  • 2661 просмотр
Пригласить эксперта
Ответы на вопрос 2
glossyweb
@glossyweb
Mark marketing
1. Подключим модель обработки изображения. Занесем в массив вывода меню, изображения.
Путь: catalog/controller/common/header.php
Действия: Открываем файл для редактирования, нажмем на клавиатуре CTRL + F, откроется окно для быстрого поиска по файлу.
Нам нужна строка

$this->load->model('extension/extension');

сразу после нее вставляем

$this->load->model('tool/image');

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

foreach ($categories as $category) {

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

Это массив главных категорий
$data['categories'][] = array(
'name' => $category['name'],
//Подключить вывод изображения
'thumb' => $this->model_tool_image->resize($category['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
//
'children' => $children_data,
'column' => $category['column'] ? $category['column'] : 1,
'href' => $this->url->link('product/category', 'path=' . $category['category_id'])
);

Это массив дочерних категорий

$children_data[] = array(
'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
//Подключить вывод изображения
'thumb' => $this->model_tool_image->resize($child['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
//
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);

Строку thumb я добавил, она и отвечает за вывод. Вы спросите откуда берется размер генерируемой иконки - из админки, в настройках во вкладке изображения "Размер изображения в списке категорий".

Так же можно самому указать ширину и высоту, вот пример для дочерней категории:
$this->model_tool_image->resize($child['image'], 20, 20),
Обратите внимание переменная $child - это дочерняя, а $category - родительская категория.

2. Вывод переменно в шаблон.

Путь: catalog/view/theme/*/common/header.tpl

Действия: Открываем файл для редактирования, нажмем на клавиатуре CTRL + F, откроется окно для быстрого поиска по файлу. Нам нужна строка

<?php if ($categories) { ?>

href' => $this->url->link('product/category', 'path=' . $category['category_id'])
);

Это массив дочерних категорий

$children_data[] = array(
'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
//Подключить вывод изображения
'thumb' => $this->model_tool_image->resize($child['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
//
'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);

Строку thumb я добавил, она и отвечает за вывод. Вы спросите откуда берется размер генерируемой иконки - из админки, в настройках во вкладке изображения "Размер изображения в списке категорий".

Так же можно самому указать ширину и высоту, вот пример для дочерней категории:
$this->model_tool_image->resize($child['image'], 20, 20),
Обратите внимание переменная $child - это дочерняя, а $category - родительская категория.

2. Вывод переменно в шаблон.

Путь: catalog/view/theme/*/common/header.tpl

Действия: Открываем файл для редактирования, нажмем на клавиатуре CTRL + F, откроется окно для быстрого поиска по файлу. Нам нужна строка

<?php if ($categories) { ?>
"/>
Ответ написан
@LandGraf
1)Любой из десятка модулей типа "стена категорий" сделает это без правки кода.

2)Ручками на HTML набрать и вставить в модуль "Хтмл блок"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы