Opencart - Создаем Новую Страницу Или Схему

Тема в разделе "Шаблоны, дизайн и оформление магазина", создана пользователем admin, 6 ноя 2016.

  1. TopicStarter Overlay
    Offline

    admin Команда форума Администратор

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

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


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

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


    Код:
    <?php
    classControllerLatestLatestextendsController{
    publicfunctionindex(){
    $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, то наполним его идентичным содержимым, т.е.

    Код:
    <?phpecho$header;?>
    <?phpecho$column_left;?>
    <?phpecho$column_right;?>
    <div id="content">
      <?phpecho$content_top;?>
      <h1 style="display: none;"><?phpecho$heading_title;?></h1>
      <?phpecho$content_bottom;?>
      </div>
    <?phpecho$footer;?>
    Переходим в панель администратора, далее в Система->Дизайн->Схема. Добавляем новую схему с именем «Поступления» и указываем путь к контроллеру нашей новой страницы, т.е. к «latest/latest».

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

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

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

    Код:
    $this->data['latest']=$this->url->link('latest/latest','','SSL');
    Например, это может быть контроллер представления header.tpl, т.е. catalog\controller\common\header.php

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

    Код:
    <ahref="<?phpecho$latest;?>">Поступления</a>
    При нажатие на данную ссылку, мы перейдем на нашу новую схему или страницу.
     
    semandro нравится это.