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

Я работаю над продуктом 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.

Спасибо

0

Решение

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]