Вывод переменной в Twig на OpenCart 3


После того, как долгое время работал с OpenCart 1 или 2, переход к опенкарт 3 таит в себе несколько подводных камней. Первый из них – это шаблонизатор twig. Мы привыкли, что в прошлых версиях можно писать код PHP, подключаться к базе и вообще делать все, что угодно прямо в файлах вывода фронтэнд сайта. А вот OpenCart 3 такое не прокатит – придётся почти все писать в контроллере, а в шаблоне twig логики будет самый минимум.



Начинаем разбираться с twig. Если отвлечься, то этот шаблонизатор можно назвать простейшим языком программирования. Есть какие-то переменные, есть некоторые функции (условия). Давайте, например, решим простую задачу – определить в карточке товара URL страницы. Задача выдуманная, но наглядно показывает общий подход, если вам захочется залезть в код шаблона и что-то там немного изменить для себя.

Итак, смотрим в файл catalog/controller/product/product.php (это контроллер вывода карточки товара в опенкарт)

<?php

class ControllerProductProduct extends Controller {
	
	private $error = array();

	public function index() {

		$this->load->language('product/product');

		$data['breadcrumbs'] = array();
		$data['breadcrumbs'][] = array(
			'text' => $this->language->get('text_home'),
			'href' => $this->url->link('common/home')
		);
Ну и так далее. Что мы тут видим? А видим мы функцию, которая запускается при первоначальной загрузке страницы с товаром. Дальше в дебри лезть не надо, после

$data['breadcrumbs'] = array();
например вставляем свой код:

$data['mid'] =  $_SERVER["REQUEST_URI"];
Здесь мы занесли в ячейку ассоциативного массива data урл текущей страницы (без домена и протокола соединения). Теперь переходим к файлу catalog/view/theme/default/template/product

{% if mid %}

   {{ mid }}

{% endif %}   
Выводим значение переменной во второй строке, но конструкция if не помешает – а вдруг нет переменной. Вы спросите, зачем она, если мы знаем, что есть? А я отвечу: надо привыкать к хорошему стилю. В следующий раз в этой переменной будет какое-то значение из базы данных. Может, атрибут товара или еще что. А если его нет, то twig споткнётся тут. Так что проверить, есть ли вообще переменная или что-то в ней не помешает.

Теперь в том месте, где будет стоять {{ mid }}, выведется в карточке товара магазина текущий адрес страницы.

Итак, если вам требуется помощь с шаблонизатором twig, с созданием или изменением интернет магазина на OpenCart 3, то вы всегда можете написать мне. Не бесплатно, но недорого я вам помогу.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, opencart, twig




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Убираем повторения слов на C++
Конвейеризация и постоянные соединения
Урок 20. Простые функции манипуляции строками в C#