2014-12-09 7 views
0

Я работаю над продуктом с белой меткой и хочу иметь возможность быстро перезаписывать некоторые шаблоны, но не все из них.Smarty {include} Файл + тег Если существует, в противном случае отключение к файлу

Моя идея заключается в том, чтобы иметь что-то в этом роде, в скажем index.tpl

{include file="header.tpl" tag=$whitelabelname} 
{include file="body.tpl" tag=$whitelabelname} 
{include file="footer.tpl" tag=$whitelabelname} 

Я хотел бы быть в состоянии, если есть какой-нибудь способ сделать это, чтобы автоматически включить файл заголовка-whitelabelname.tpl если существует, или header.tpl, если это не так.

$tagTemplate = substr($template, 0, -4) . "-" . $tag . ".tpl"; 
if (file_exists($tagTemplate)) $template = $tagTemplate; 

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

Возможно ли продлить директиву {include} как-то, чтобы включить мою логику, а не самостоятельно менять smarty_internal_compile_include.php.

Благодаря

+0

Вам не нужно менять компилятор Smarty, Smarty может быть расширен многими способами путем внедрения плагинов. – axiac

ответ

0

Вы можете сделать это путем реализации Smarty resource plugin. Проверьте пример на странице документации. Вы должны реализовать свою логику file_exists() в первой функции. Также проверьте способ register_resource() о том, как использовать плагин.