Иногда возникает потребность в создание новой страницы или схемы под OpenCart, под страницей я буду  понимать новую связку файла представления (.tpl) и контроллера (php).

Как пример мы хотим сделать страницу, где будет выводиться все последние поступления. Это будет пустая страница типа home.tpl, в админпанели OpenCart мы установим стандартный модуль “Последние” и добавим его на вывод в наш новую схему.

Итак создаем новую страницу или схему в CMS OpenCart

Первым делом создадим директорию latest по адресу catalog\controller. Заходим в нее и создаем php файл контроллера, назовем его также, т.е. latest.php

Внутри контроллера пропишем

<?php  
class ControllerLatestLatest extends Controller {
	public function index() {
		$this->document->setTitle($this->config->get('config_title'));
		$this->document->setDescription($this->config->get('config_meta_description'));
		$this->data['heading_title'] = $this->config->get('config_title');
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/latest/latest.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/latest/latest.tpl';
			$this->data['template'] = $this->config->get('config_template');
		} else {
			$this->template = 'default/template/latest/latest.tpl';
		}

		$this->children = array(
			'common/column_left',
			'common/column_right',
			'common/content_top',
			'common/content_bottom',
			'common/footer',
			'common/header'
		);							
		$this->response->setOutput($this->render());
	}
}
?>

Это стандартный контроллер для шаблона home.tpl, изменили мы только название класса с «ControllerCommonHome» на «ControllerLatestLatest» и строки с
«/template/common/home.tpl» на «/template/latest/latest.tpl».

Для страницы где выводиться последние поступления это будет достаточно, по сути мы создаем клон шаблона common/home.tpl.

Далее создаем файл представления для нашей страницы, переходим в catalog/view/theme/имя_вашей_темы/template

и создаем одноименную директорию, как и в контроллере, т.е. «latest». Переходим в нее и создаем файл шаблон latest.tpl. Наполняем его содержимым, т.к. мы создаем клон home.tpl, то наполним его идентичным содержимым, т.е.

<?php echo $header; ?>
<?php echo $column_left; ?>
<?php echo $column_right; ?>
      <div id="content">
           <?php echo $content_top; ?>
           <h1 style="display: none;"><?php echo $heading_title; ?></h1>
           <?php echo $content_bottom; ?>
     </div>
<?php echo $footer; ?>

Переходим в панель администратора, далее в Система->Дизайн->Схема. Добавляем новую схему с именем «Поступления» и указываем  путь к контроллеру нашей новой страницы, т.е. к «latest/latest».

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

Проверяем, вводим в строке браузера http://127.0.0.1/index.php?route=latest/latest (127.0.0.1 – в случае локального расположенния OpenCart, иначе доменное имя вашего сайта), должно все открыться без ошибок.

Теперь добавим переменную с ссылкой на наш шаблон. Для этого открываем контролер шаблона в котором хотим что бы была видна данная ссылка и добавляем следующие строки

$this->data['latest'] = $this->url->link('latest/latest', '', 'SSL');

Например, это может быть контроллер представления header.tpl, т.е. catalog\controller\common\header.php

Теперь в файле представления header.tpl будет видна переменная $latest с ссылкой, мы можем ее использовать  таким образом

<a href="/<?php echo $latest; ?>">Поступления</a>

При нажатие на данную ссылку, мы перейдем на нашу новую схему или страницу.

 

$this->data['latest'] = $this->url->link('latest/latest', '', 'SSL');