Я работаю над продуктом White Label и хотел бы иметь возможность быстро перезаписать некоторые шаблоны, но не все.
Моя идея состоит в том, чтобы иметь что-то подобное, скажем, 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 () о том, как использовать плагин.
Других решений пока нет …