Создание интернет-магазинов
на Opencart

Модули, шаблоны и дополнения сделанные нами

Opencart 3. Маленькие лайфхаки


Сделать проверку главной страницы в файле header.twig

catalog\controller\common\header.php

if (!isset($this->request->get['route']) || (isset($this->request->get['route']) && $this->request->get['route'] == 'common/home')) { 
	$data['isHome'] = true;
} else {	
	$data['isHome'] = false;}

catalog\view\theme\default\template\common\header.twig

{% if isHome %}	
  home 
{% else %}	
  not home
{% endif %}


PHP to Twig Online Converter

У Twig своеобразный синтаксис)). И он вызывает в начале некоторые трудности. В настоящее время можно пользоваться конвертером для перевода PHP в Twig

phptotwig.com 

Это должно упростить вашу жизнь. Хотя и он допускает ошибки.


Что почитать про Twig и Opencart 

Для начала вы должны знать, что в опенкарте версия twig 1x, версия 2х поддерживает только php7 и выше.

Документация по Twig (русский)

Documentation for Twig 1.x (английский)

OCMOD Документация (английский)


Доступные директории для загрузки файлов через установку расширений

Обратите внимание, на тот факт, что не все директории доступны для загрузки файлов через установку расширений. Ниже список доступных директорий.

 'admin/controller/extension/',
 'admin/language/',
 'admin/model/extension/',
 'admin/view/image/',
 'admin/view/javascript/',
 'admin/view/stylesheet/',
 'admin/view/template/extension/',
 'catalog/controller/extension/',
 'catalog/language/',
 'catalog/model/extension/',
 'catalog/view/javascript/',
 'catalog/view/theme/',
 'system/config/',
 'system/library/',
 'image/catalog/'


Вывод массива в Twig

Имеем массив со следующей структурой

$data = [
'topics' => [
'topic1' => ['Message 1 of topic 1', 'Message 2 of topic 1'],
'topic2' => ['Message 1 of topic 2', 'Message 2 of topic 2'],
],
];

Отображаем все сообщения во всех темах

{% for topic, messages in topics %}
* {{ loop.index }}: {{ topic }}
{% for message in messages %}
 - {{ loop.parent.loop.index }}.{{ loop.index }}: {{ message }}
{% endfor %}
{% endfor %}

Имеем на выходе

* 1: topic1
 - 1.1: The message 1 of topic 1
 - 1.2: The message 2 of topic 1
* 2: topic2
 - 2.1: The message 1 of topic 2
 - 2.2: The message 2 of topic 2


Отображение дампа в Twig

При написании модулей требуется видеть дамп переменных. Но просто так это в Twig не сделать. Для этого надо в файле 

/system/library/template/Twig/Environment.php  установить 

            'debug' => true,

и добавить

$this->addExtension(new Twig_Extension_Debug($options['debug']));

После этого в шаблоне можно отобразить

{{ dump() }}

Есть еще вариант удобного отображения дампа переменных.

{% for key, value in _context %}
    {% if key starts with '_' %}
    {% else %}
        <pre style="background: #eee">{{ key }}</pre>
        {{ dump(value) }}
    {% endif %}
{% endfor %}