Smarty 5 в DPCMS: что изменилось для разработчиков шаблонов
Главные подводные камни перехода с Smarty 3 на Smarty 5 и как мы это решили в движке DPCMS.
Smarty 5 вышел вместе с PHP 8 — и сразу обнажил несовместимости со старыми шаблонами, написанными ещё в эпоху Smarty 3. В DPCMS мы прошли эту миграцию полностью: ниже — рабочий чек-лист, по которому можно перевести свой проект без сюрпризов в проде.
Что изменилось
escape_html=trueтеперь по умолчанию — в DPCMS отключаем явно вcTemplate, иначе плывут все вёрстки с HTML-вставками.- PHP-функции больше не работают как модификаторы из коробки — регистрируем нужные через
registerPlugin('modifier', ...). count($var)наnullвалит фатал в PHP 8 — лечится{$x|default:[]|@count}; для массовой правки используемfix_count_null.pl.- Изменилось поведение
{capture}и{include}— путь шаблона теперь обязательно с расширением.
Что осталось как было
Синтаксис переменных, циклов и условий не поменялся — миграция в основном про конфигурацию и зарегистрированные плагины. Большинство верстальных шаблонов в DPCMS не пришлось трогать вообще.