Свой шаблон для категорий в Opencart

Задача не раз подымалась — «Как сделать свой шаблон для категорий?«

И вот тоже столкнулся с такой штукой, но все что пишут в «интернетах» не подходит, так как по тем инструкциям можно назначить шаблон только для категории с определенным ID.
Я решил сделать все по-другому. Может быть не совсем правильно, но все же думаю идея заслуживает внимания.

И так, нам надо вывести категорию (или несколько категорий) с другим шаблоном. Для этого я решил использовать схемы вывода.

Создаем новую схему  — Система — Дизайн — Схемы   — Назовем ее «Подкатегория» и id у нее — ’12’

В админке у нужной категории на вкладке «Дизайн» выбираете созданную схему «Под категория»

Теперь в папке с шаблоном создаете шаблон для вывода вашей «особенной» категории к примеру catalog/view/theme/…/product/subcategory.tpl — содержимое можно взять с оригинала category.tpl (и изменить под себя)

Теперь в контролере категорий —

catalog/controller/product/category.php

Задаем определение схемы отображения:

после 10 строки $this->load->model(‘tool/image’);

добавляем

if ('product/category' && isset($this->request->get['path'])) {
   $path = explode('_', (string)$this->request->get['path']);
   $this->data['layout_id'] = $this->model_catalog_category->getCategoryLayoutId(end($path)); 
}

дальше находим примерно 405 строка (в версии 1.5.4.1 — 350 строка)

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
   $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
   $this->template = 'default/template/product/category.tpl';
}

И заменяем на

if ($this->data['layout_id'] == 12) {
   $this->template = $this->config->get('config_template') . '/template/product/subcategory.tpl';
} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
   $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
} else {
   $this->template = 'default/template/product/category.tpl';
}

где 12 это id вашей схемы «Подкатегория», а subcategory.tpl ваш файл с шаблоном вывода категории

Все теперь шаблон для вашей категории будет браться из файла subcategory.tpl

Аналогично можно сделать и для информационных страниц!!!

Не забудьте, что модули тоже придется вывести в схему «Подкатегория»

guest
3 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Елена
Елена
4 лет назад

Спасибо, мне очень помогло!

Takasu
Takasu
2 лет назад

Отличная идея, парень)