Добавляем новую страницу (схему) в OpenCart
Иногда возникает потребность в создание новой страницы или схемы под 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>
При нажатие на данную ссылку, мы перейдем на нашу новую схему или страницу.