• Главная
  • Карта сайта
Не найдено

Внедряем обработчик шалонов Twig на cms систему 1c bitrix

Опубликовано: 01.09.2018

Twig — это обработчик шаблонов на PHP, распространяемый по лицензии BSD. Принцип его функционирования заключается в компиляции исходных темплейтов при первом обращении. Полученный код сохраняется в кэше (файлы с расширением .twig), и в дальнейшем используется каждый раз, когда осуществляется повторный вызов шаблона. Важной особенностью данного обработчика является то, что кэш шаблонов не связан с собственным кэшем cms Битрикс: если Twig кэширует непосредственно PHP-код, то сама система сохраняет HTML-разметку и результат работы компонента. Такой подход позволяет избегать конфликтов, а также исключает риск потери данных.

Еще одно преимущество Twig заключается в способе обновления записанных в кэше шаблонов. Кроме очевидной очистки каталога методом Twig_Environment::clearCacheFiles() , обработчик способен пересоздавать кэш конкретного шаблона в автоматическом режиме. Делать это можно посредством auto_reload, что актуально в процессе черновой разработки под движок Bitrix, а также используя опцию debug — она предоставляет возможность не только работать с кэшем в автоматическом режиме, но также использовать отладочные возможности.

Подключаем Twig к 1С Bitrix

Интеграция Twig в движок 1С Битрикс, как обычно, начинается с объявления глобальной переменной, отвечающей, собственно, за рендеринг шаблона. Затем ее необходимо зарегистрировать в глобальном массиве $arCustomTemplateEngines, указав расширение выходного файла. Выглядеть все это может следующим образом:

Чего мы добились? Теперь, если в каталоге шаблона компонента Битрикс окажется файл с расширением .twig, будет вызываться функция renderTwigTemplate(). При этом, ей передается вся необходимая информация, включая параметры вызова и результат выполнения компонента, и даже языковые константы. Однако, здесь имеется подводный камень. Если в каталоге шаблона компонента cms Bitrix окажутся два файла example.twig и example.php, то приоритет отдается именно php-шаблону. То есть, реализовать подмену шаблонов, привязанную к типу активного в данный момент времени шаблонизатора (если таковых вы планируете использовать несколько), к сожалению, не выйдет.

После всех указанных действий, остается лишь настроить движок Twig. Для этого нужно подключить autoloader, указать путь к каталогу шаблонов и определить параметры конфигурации, а также добавить необходимые расширения. При этом придется использовать статичные свойства и методы класса. Данная особенность объясняется архитектурой cms 1С Битрикс — система не поддерживает размещение сервисных объектов.

Особенности работы с Twig в системе 1С Битрикс

Шаблонизатор подключен и настроен, казалось бы, можно начинать работу. Однако не все так просто — не обошлось без подводных камней и тут. Все проблемы решаемы, но отыскать их причину самостоятельно не так-то и просто, поэтому остановимся подробнее на ключевой тройке.

   1. Система Bitrix устроена таким образом, что в ряде случаев приходится использовать глобальные объекты и специфические функции непосредственно в шаблонах компонентов. Нативной поддержки такого поведения Twig не имеет, однако обработчик позволяет создавать собственные расширения, в которых вы сможете указать все необходимые функции, теги, фильтры, и прочее. Естественно, разработка дополнительных расширений зависит от того, что именно вы хотите получить на выходе.

   2. Вторая проблема возникает при передаче языковых констант в шаблон. Причина ошибки заключается, опять же, в специфике ядра cms. Как выяснилось, для успешной передачи констант языковой файл шаблона должен иметь такое же имя и расширение, как и сам шаблон (например, example.twig), и являться при этом PHP-файлом, как бы странно это ни звучало. Впрочем, вспоминая о конфликтах некоторых продуктов от 1С с патчами ядра, предотвращающими возникновение ошибки переполнения буфера, подобным мелочам перестаешь удивляться.

   3. Еще один нюанс касается финального этапа рендернинга в cms 1С Bitrix. При использовании Twig-шаблонов component_epilog попросту не будет отрабатываться, а причина заключается в том, что автоматическое подключение происходит только к нативным шаблонам. Данная проблема решается принудительным вызовом component_epilog по завершении рендеринга — решение не самое изящное, зато действенное.

После описанных манипуляция мы получаем эффективное и полностью работоспособное решение. Twig будет адекватно взаимодействовать с движком 1С Битрикс для интернет магазина , корпоративного, промо, или любого другого сайта. Теперь будут преобразовываться нативные конструкции шаблонов в куда более наглядную и лаконичную форму, что значительно упрощает процесс разработки.

Новости
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью

rss