Smarty {include} File + Tag Если существует, в противном случае откройте файл

0

Я работаю над продуктом с белой этикеткой и хотел бы быстро перезаписать некоторые шаблоны, но не все из них.

Моя идея - иметь что-то подобное, например index.tpl

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

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

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

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

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

благодаря

  • 0
    Вам не нужно менять компилятор Smarty, Smarty можно расширять многими способами путем реализации плагинов.
Теги:
smarty
smarty3

1 ответ

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню