Создание контроллера и шаблона на opencart 2

04.11.2015 07:20

К примеру, нас попросили создать отдельную страницу для полного списка товаров, но без списка категорий в шапке. Конечно, список категорий можно скрыть по условию в стандартном шаблоне. Мы же, для тренировки, создадим новый контроллер и новый шаблон.

Создаём файл в с именем newcat.php в каталоге /catalog/controller/product/. Копируем туда содержимое файла category.php из этого же каталога.

В самом начале файла есть объявление класса: "class ControllerProductCategory extends Controller {". Заголовок класса должен содержать имя нашего файла, и для нашего контроллера будет иметь вид: "class ControllerProductNewcat".

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

			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
				$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/category.tpl', $data));
			} else {
				$this->response->setOutput($this->load->view('default/template/product/category.tpl', $data));
			}

Меняем все "category.tpl" на "newcat.tpl".

Мы клонировали стандартный контроллер категорий, далее создаём новый шаблон "newcat.tpl" в каталоге: /catalog/view/theme/default/template/product/ и копируем в него содержимое шаблона category.tpl.

Находим место вывода списка категорий вверху странички и удаляем всё лишнее.

Теперь по url: /index.php?route=product/newcat мы попадём в наш новый шаблон.

Напоследок выведем модуль "категории" в левой колонке. Открываем админку, система->дизайн->макеты.

new_contr_and_tmpl

Добавляем новый макет с именем "Newcat":

new_contr_and_tmpl2

Всё готово. Пример можно посмотреть здесь: opencart.allwebstuff.info/index.php?route=product/newcat



Переделываем чпу opencart

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

Сравнение производительности форумных CMS

Часто приходится читать мнения о скорости работы каких- либо CMS. Обычно это звучит как "SMF - очень быстрый форумный движок" или "punbb - очень лёгкий движок". А вот в чём конкретно отличие? На сколько SMF быстрее? И на сколько punbb легче? Давайте замерим!


(10) Комментариев

Sputnik - 04.11.2015 07:54:08
- 0    + 0
Всё работает! Огромное спасибо!
Александр - 28.11.2015 20:05:24
- 0    + 0
Здравствуйте! Как вывести кнопочку в админке (при редактировании товара или в списке всех товаров) с ссылкой на товар. Чтобы например отредактировав какой-либо товар можно было нажать на ссылку и перейти на страничку товара для просмотра. Сейчас приходится для просмотра искать товар на сайте
Илья - 29.11.2015 02:56:13
- 0    + 0
Добавил инструкцию: http://allwebstuff.info/ссылка-на-товар-из-меню-редактировани/
Эдуард - 13.09.2016 21:17:57
- 0    + 0
А подскажите как можно организовать например 2 группы опций, которые можно выводить на разных карточках товара. чтобы один набор опций выводился например на продукте по умолчанию а второй набор опций для другого товара но уже с другим оформлением
10 Рублей - 01.12.2018 08:37:30
- 0    + 0
Попробовал некоторые советы с вашего сайта, всё рабочее. Спасибо, что помогаете новичкам. Совет-идея - как вариант делать более широкий обзор той же темы, т.е. для OpenCart и OCStore, для 1.5 2.0 3.х... было бы круто
Илья - 16.12.2018 17:44:24
- 0    + 0
К счастью, я уже очень давно не работаю ни с opencart, ни с php вообще... Эти статьи про опенкарт уже стали достоянием истории)
Но я очень рад, что они до сих пор кому-то полезны, СПАСИБО!
Дмитрий - 23.02.2019 16:46:37
- 0    + 0
Приветствую!
На ocStore 2.3.0.2.3 в /catalog/controller/product создал файл categoryabout.php, в него перенес содержимое файла /catalog/controller/product/category.php и в начале файла поправил: class ControllerProductCategoryabout extends Controller.

Далее в контроллере нужно указать, что мы будем использовать новый шаблон. Находим строчки, где подключается шаблон:... не могу найти строчки, где подключается шаблон:
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template')... в файле categoryabout.php, который я продублировал этого нет, подскажи пожалуйста, где нужно искать эти сточки?
Илья - 24.02.2019 07:50:44
- 0    + 0
Уже не могу помочь, Опенкартом не занимаюсь очень давно. Да, скорее всего за 4 года что-то изменилось, но что я не знаю.
Станислав - 20.09.2019 16:52:55
- 0    + 0
в 3 версии, такая портянка, по вашему что править нужно..

<?php
class ControllerCommonNewtemp extends Controller {
public function index() {
$this->document->setTitle($this->config->get('config_meta_title'));
$this->document->setDescription($this->config->get('config_meta_description'));
$this->document->setKeywords($this->config->get('config_meta_keyword'));

if (isset($this->request->get['route'])) {
$this->document->addLink($this->config->get('config_url'), 'canonical');
}

$data['column_left'] = $this->load->controller('common/column_left');
$data['column_right'] = $this->load->controller('common/column_right');
$data['content_top'] = $this->load->controller('common/content_top');
$data['content_bottom'] = $this->load->controller('common/content_bottom');
$data['footer'] = $this->load->controller('common/footer');
$data['header'] = $this->load->controller('common/header');

//add template test_glavnaya

$this->response->setOutput($this->load->view('common/newtemp', $data));

// link template
//ver 2
// if (file_exists(DIR_TEMPLATE . $this->config->get('config_url') . '/template/common/newtemp.twig')) {
// $this->response->setOutput($this->load->view($this->config->get('config_url') . '/template/common/newtemp.twig', $data));
// } else {
// $this->response->setOutput($this->load->view('default/template/common/home.twig', $data));
// }

}
}
Ilya - 22.09.2019 04:45:17
- 0    + 0
Станислав, прости, но с 3 опенкартом я уже 100% никак не помогу.