Инъекция кода в файлы движка (\engine\*) плагином. Как?

Возникла необходимость инъекции кода в некоторые фалы движка. Есть ли возможность реализовать это из плагина?
Например, надо немного изменить (без влияния на общую логику работы)
\engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatecompilerbase.php

16 комментариев

avatar
да хороший вопрос поддерживаю :) иногда оч надо
avatar
Есть ли возможность реализовать это из плагина?
нет
avatar
Ок, а возможность инъекции части кода в шаблон при компиляции? Т.е., влиять на процесс компиляции?

К примеру, при компиляции файла шаблона определить такой-то элемент и произвести инъекцию кода в это место? (я не про хуки)
avatar
я предлагал применять наследование шаблонов, даже рабочий вариант сделал.
но чето меня не поддержали )
avatar
Жаль.
avatar
просто шаблоны с плагинабельной разметкой становятся трудно понятными для верстальщиков
avatar
шаблоны с плагинабельной разметкой
А это как?
avatar
В рамках работы над своим плагином решаю такую задачу: вставка кода в произвольное место шаблона на этапе компиляции
avatar
Вот и я сейчас тоже. Выбрал вариант парсинга исходников шаблона, ну поиск подходящего места с помощью regexp, предварительно создав «карту шаблона» — описание характерных регулярок для разных мест шаблона.
А вы, ели не секрет?
avatar
Если не секрет, ваш плагин что будет делать? (возможно, мы реализуем схожие идеи?)
Я свой делаю для упрощения разработки шаблонов. Отмечать нужные места, что бы было видно, где происходит склейка частей шаблонов.
avatar
Функционал, который я реализую (практически сделал уже, тестирую), позволяет делать следующее:

на этапе компиляции шаблона задать в нужном шаблоне поиск HTML-элементов по CSS-селектору (как в jQuery, типа "#id_blabla ul.class1.class2 li") и воткнуть в найденное место либо явно задаваемый HTML-текст, либо содержимое другого шаблона
avatar
Полезная штука будет!
avatar
Да, звучит очень хорошо.
avatar
avadim, подскажите, пожалуйста, а как вы при реализации плагина боролись с очисткой кеша скомпиллированных шаблонов?
Брутальной очисткой каталога, ли есть встроенный умный функционал движка?
Спасибо!
avatar
Нет, это совсем не феншуйно. У Smarty есть опция, которая заставляет его перекомпилировать шаблон, даже если он есть в кеше. И я реализовал функционал, который позволяет в конфиг-файле задавать этот параметр, причем, можно указать, для каких URL будет выполняться эта принудительная перегенерация.

Скоро расскажу более подробно в отдельной статье
avatar
Спасибо! Очень жду вашей статьи!
Ну и пока сам покопаю Smarty :-)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.