Я работаю над продуктом с белой этикеткой и хотел бы быстро перезаписать некоторые шаблоны, но не все из них.
Моя идея - иметь что-то подобное, например 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 самостоятельно.
благодаря
Вы можете сделать это, внедрив плагин ресурса Smarty. Проверьте пример на странице документации. Вы должны реализовать file_exists()
в первой функции. Также проверьте метод register_resource() о том, как использовать плагин.