Адаптация модулей для OpenCart 1.5.x к OpenCart 2

Дата: 23.02.2016 Просмотров: 1232 Комментарии: 0
В OpenCart, как и в любом другом программном продукте, смена мажорной версии означает потерю совместимости. Модули под версии 1.5.x больше не подходят для OpenCart 2, их придется адаптировать. Итак, что нужно менять в старых дополнениях.

Рендеринг шаблона

Раньше для передачи данных в шаблон надо было менять поле $data контроллера, сам шаблон брался из поля $title, а вывод осуществлял метод render:

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/example.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/module/example.tpl';
} else {
    $this->template = 'default/template/module/example.tpl';
}
$this->render();

теперь используются локальные переменные метода контроллера:

$data = array();

$data['title'] = $this->language->get('title');

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/example.tpl')) {
    $template = $this->config->get('config_template') . '/template/module/example.tpl';
} else {
    $template = 'default/template/module/example.tpl';
}

$this->response->setOutput($this->load->view($template, $data));

Иначе теперь стали выводиться хедеры, футеры и другие подчиненные (children) блоки. Например, для страниц в админке было так:

$this->children = array(
    'common/header',
    'common/footer'
);

стало так:

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

Обратите внимание, что в админке OpenCart 2 левая колонка выделена в отдельный шаблон.

По-другому теперь осуществляется переадресация (redirect).

Было так:

$this->redirect($this->url->link('extension/feed', 'token=' . $this->session->data['token'], 'SSL'));

стало:

$this->response->redirect($this->url->link('extension/feed', 'token=' . $this->session->data['token'], 'SSL'));

Модуль оплаты

В контроллере модуля оплаты метод index был protected:

class ControllerPaymentPmethod extends Controller {
	protected function index() {

стал public:

class ControllerPaymentPmethod extends Controller {
	public function index() {

Платежные модули при успешной оплате обычно меняют статус заказа. Раньше статус менялся так:

$this->model_checkout_order->confirm($order_id, $order_status_id, 'Pmethod');

а начиная с версии 2 - вот так:

$this->model_checkout_order->addOrderHistory($order_id, $order_status_id);

Комментарии

Написать комментарий

Популярные предложения

Новая Почта c калькулятором + отделения для Opencart 2.x

Новая Почта c калькулятором + отделения для Opencart 2.x

Модуль новой почты с калькулятором стоимости доставки + отделения для Opencart 2.x Калькулятор ново..

200 грн. 300 грн.

Модуль Приват24 для Opencart 2.x

Модуль Приват24 для Opencart 2.x

Модуль Приват24 для Opencart 2.x Подключает сервис онлайн оплаты Приват24 на сайт. Установка спосо..

200 грн. 300 грн.

Новая Почта c калькулятором + отделения для Opencart 3.x

Новая Почта c калькулятором + отделения для Opencart 3.x

Модуль новой почты с калькулятором стоимости доставки + отделения для Opencart 3.x Калькулятор ново..

300 грн.