TorrentPier 3.0: Переход на новый шаблонизатор Twig

Exile

Administrator
Привет.

Это первая статья из обещанной сервии, в рамках которой мы будем рассказывать о том, что появится в новой мажорной версии проекта.

Сегодня поговорим об одном из главных изменений - мы полностью переработали систему шаблонов.

Что было​

Если вы когда-нибудь заглядывали в шаблоны TorrentPier, то наверняка видели такой синтаксис:
HTML:
    <!-- IF TERMS_HTML -->
    <tr>
        <td class="row1">
            <div class="post_wrap">
                {TERMS_HTML}
            </div>
        </td>
    </tr>
    <!-- ENDIF -->
    <!-- IF IS_ADMIN -->
    <tr>
        <td class="row1">
            {TERMS_EDIT}
        </td>
    </tr>
    <!-- ENDIF -->
Это наследие phpBB2 и его шаблонизатора eXtreme Styles. Старый шаблонизатор верой и правдой служил проекту много лет, но у него есть одна большая проблема - документации по нему практически нет. Не так давно появилась, но мы ее делали как раз в рамках ресерча для переписывания. Если вы хотели что-то изменить в существующем или написать свой шаблон, приходилось разбираться методом проб и ошибок или искать древние статьи с форумов phpBB.

Что стало​

В версии 3.0 мы заменили этот движок на Twig - современный шаблонизатор от создателей Symfony. Это один из самых популярных инструментов в мире PHP, используется в тысячах проектов, и по нему есть море материалов на любом языке.

Теперь тот же код можно написать так:
HTML:
    {% if TERMS_HTML %}
    <tr>
        <td class="row1">
            <div class="post_wrap">
                {{ TERMS_HTML|raw }}
            </div>
        </td>
    </tr>
    {% endif %}
    {% if IS_ADMIN %}
    <tr>
        <td class="row1">
            {{ TERMS_EDIT|raw }}
        </td>
    </tr>
    {% endif %}
Вы можете сказать, что изменения невелики, но это один из самых простых примеров, есть куда более сложные, где можно выкинуть огромное количество логики на бэкенде, например легко формируя большие блоки сразу в шаблоне. Для вас же основное отличие в том, что шаблоны на Twig поддерживаются во множестве IDE, и у вас уже "из коробки" есть огромное количество различных модификаторов чтобы какие-то изменения можно было делать автоматически в шаблонах, а не в PHP-коде.

Главное - обратная совместимость​

Ваши старые шаблоны продолжат работать как раньше. Мы написали конвертер, который автоматически преобразует старый синтаксис в Twig прямо на лету. Ничего переписывать не нужно - просто обновитесь, и все заработает. Ну или закиньте старый шаблон и он тоже будет работать.

При этом, у вас появляется появляется выбор:
  • Оставить старые шаблоны как есть
  • Постепенно переписывать на Twig при доработках
  • Писать новые шаблоны сразу на Twig
Можно даже миксовать - в одном файле использовать сразу оба синтаксиса.

Что это дает​

  • Документация. Все есть на twig.symfony.com, плюс туториалы и примеры на любом другом языке
  • Современные возможности. Наследование шаблонов, макросы, фильтры - все из коробки
  • Кеширование. Скомпилированные шаблоны умно кешируются, повторный парсинг не нужен
  • Отладка. В режиме разработчика появится debug-панель с информацией о загруженных шаблонах

Что дальше​

Мы планируем переписать стандартный шаблон на Twig и визуально его обновить. Мы об этом еще расскажем в одной из следующих статей про изменения в версии 3.0. Пока что у нас просто появилась возможность делать это удобно, с кучей новых возможностей и с надеждой на то, что теперь на форуме не будут задавать вопросы по тому, что синтаксис шаблонизатора не понятен.
 
Back
Top