1. Синтаксис шаблонов phpBB преобразуется ядром в синтаксис TWIG в фоновом режиме, поэтому, если расширение уже использует TWIG, данное преобразование не требуется, что экономит ресурсы.
2. Twig является наиболее распространенным синтаксисом шаблонов для PHP, поэтому любая популярная среда разработки (IDE) или редакторы кодов умеют его распознавать, подсвечивать, производить автозаполнение, проверку и выявление ошибок и т.д. Поэтому написание кода будет проще в части читабельности и проверки.
3. Twig - это будущее phpBB. Хотя стиль prosilver всё ещё использует старый синтаксис phpBB, в новых стилях для будущих релизов (4.х и старше) будет использоваться Twig. Новый код, добавляемый в prosilver, также использует только синтаксис Twig.
4. С Twig можно реализовать намного больше идей, чем с синтаксисом phpBB.
Основные примеры соответствия синтаксисов phpBB и Twig:
Переменные шаблона
phpBB
Код: Выделить всё
{FOO_BAR}
Код: Выделить всё
{{ FOO_BAR }}
Языковые переменные шаблона
phpBB
Код: Выделить всё
{L_FOO_BAR}
Код: Выделить всё
{{ lang('FOO_BAR') }}
phpBB
Код: Выделить всё
{LA_ESCAPED_FOR_JAVASCRIPT}
Код: Выделить всё
{{ lang('ESCAPED_FOR_JAVASCRIPT')|e("js") }}
или
{{ lang('ESCAPED_FOR_JAVASCRIPT')|addslashes }}
Логические структуры
phpBB
Код: Выделить всё
<!-- IF S_FOO -->
... hello ...
<!-- ELSE -->
... world...
<!-- ENDIF -->
Код: Выделить всё
{% if S_FOO %}
... hello ...
{% else %}
... world ...
{% endif %}
Циклы
phpBB
Код: Выделить всё
<!-- IF .users -->
<!-- BEGIN users -->
This is {users.VALUE}
<!-- BEGINELSE -->
no values
<!-- END users -->
<!-- ENDIF -->
Код: Выделить всё
{% if users %}
{% for user in users %}
This is {{ user.VALUE }}
{% else %}
no values
{% endfor %}
{% endif %}
Для примера приведена переменная [c]user[/c], можно использовать любое другое имя.
Вложенные циклы
Код: Выделить всё
{% for item in items %}
{% for action in item.actions %}
{{ action.U_ACTION }}
{% endfor %}
{% endfor %}
Подключение файлов
phpBB
Код: Выделить всё
<!-- INCLUDE overall_header.html -->
<!-- INCLUDECSS @foo_bar/style.css -->
<!-- INCLUDEJS @foo_bar/script.js -->
Код: Выделить всё
{% include 'overall_header.html' %}
{% INCLUDECSS '@foo_bar/style.css' %}
{% INCLUDEJS '@foo_bar/script.js' %}
События шаблона
phpBB
Код: Выделить всё
<!-- EVENT foo_template_event_location -->
Код: Выделить всё
{% EVENT foo_template_event_location %}
Задание значений переменным шаблона
phpBB
Код: Выделить всё
<!-- DEFINE $FOO = 'foo' -->
<!-- IF $FOO neq '' -->
{$FOO}
<!-- ENDIF -->
Код: Выделить всё
{% DEFINE FOO = 'foo' %}
{% if definition.FOO != '' %}
{{ definition.FOO }}
{% endif %}
{# если переменная вообще не используется в контексте синтаксиса шаблонов phpBB: #}
{% set bar = 'bar' %}
{% if bar != '' %}
{{ bar }}
{% endif %}
Комментарии
phpBB
Код: Выделить всё
<!-- Это комментарий -->
Код: Выделить всё
{# Это комментарий #}
Также можно работать с массивами следующим образом:
Код: Выделить всё
<?php
$template->assign_var('CURRENCIES', array(
'USD' => 'U.S. Dollar $',
'AUD' => 'Australian Dollar $',
'CAD' => 'Canadian Dollar $',
));
Код: Выделить всё
{% for value, label in CURRENCIES %}
<option value="{{ value }}">{{ label }}</option>
{% endfor %}
Оригинал темы: https://www.phpbb.com/community/viewtop ... &t=2424606