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



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

Создаём файл в с именем 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 мы попадём в наш новый шаблон.

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

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

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

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

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


Сообщество: AWS

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


ID: #390   Создан:
Автор: Sputnik

Всё работает! Огромное спасибо!

ID: #391   Создан:
Автор: Александр

Здравствуйте! Как вывести кнопочку в админке (при редактировании товара или в списке всех товаров) с ссылкой на товар. Чтобы например отредактировав какой-либо товар можно было нажать на ссылку и перейти на страничку товара для просмотра. Сейчас приходится для просмотра искать товар на сайте

ID: #392   Создан:
Автор: ololoev

Добавил инструкцию: http://allwebstuff.info/ссылка-на-товар-из-меню-редактировани/

ID: #393   Создан:
Автор: Эдуард

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

ID: #394   Создан:
Автор: 10 Рублей

Попробовал некоторые советы с вашего сайта, всё рабочее. Спасибо, что помогаете новичкам. Совет-идея - как вариант делать более широкий обзор той же темы, т.е. для OpenCart и OCStore, для 1.5 2.0 3.х... было бы круто

ID: #395   Создан:
Автор: ololoev
>>394

К счастью, я уже очень давно не работаю ни с opencart, ни с php вообще... Эти статьи про опенкарт уже стали достоянием истории) Но я очень рад, что они до сих пор кому-то полезны, СПАСИБО!

ID: #396   Создан:
Автор: Дмитрий

Приветствую! На 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, который я продублировал этого нет, подскажи пожалуйста, где нужно искать эти сточки?

ID: #397   Создан:
Автор: ololoev

Уже не могу помочь, Опенкартом не занимаюсь очень давно. Да, скорее всего за 4 года что-то изменилось, но что я не знаю.

ID: #398   Создан:
Автор: Станислав

в 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));
	// }

}

}

ID: #399   Создан:
Автор: ololoev
>>398

Станислав, прости, но с 3 опенкартом я уже 100% никак не помогу.

Всего: 10 комментариев на 1 страницах

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



Сообщества