#smarty
#умный
Вопрос:
Какой метод объединения шаблонных частей моего сайта является наилучшей практикой? Я предпочитаю первое решение, но я не уверен, что использование нескольких вызовов для display() является хорошей практикой. Я ищу простоту обслуживания и скорость.
<?php
$smarty->display('header.tpl');
$smarty->display('menu.tpl');
$smarty->display('article1.tpl');
$smarty->display('footer.tpl');
?>
или отображение одного шаблона smarty, а затем внутри шаблона, имеющего
{include file="header.tpl"}
<body id={$pageid}>
{include file="menu.tpl"}
{include file="header_inner.tpl"}
Content of page
{include file="footer.tpl"}
Ответ №1:
Если вы используете Smarty3 (что вам и следует), взгляните на наследование и наследование шаблонов. Это позволяет вам определять шаблоны так же, как вы бы создавали свои классы в стиле ООП.
Если вы не можете (или не хотите) использовать TI, я бы предложил {include}
подход. Причины:
- Сокращение API между PHP и шаблонами
- позволяет кэшировать вывод более простым способом
- позволяет проверять $cache_modified_check для базовой
HTTP 304 Not Modified
обработки прямо из коробки - может быть оптимизирован (с помощью Smarty3) с помощью {include … inline} для уменьшения ввода-вывода файловой системы
- обычно может быть оптимизирован (с помощью Smarty3) с помощью $merge_compiled_includes (по-прежнему уменьшая ввод-вывод файловой системы)
У нескольких вызовов display() есть (только) одно преимущество. Вы можете отправлять данные в браузер по частям. Таким образом, вы могли бы сбросить его в браузер до того, как он будет отображен. Это позволяет браузеру извлекать (блокировать) ресурсы, такие как скрипты и css, еще до того, как он получит весь документ. («Конвейерная обработка загрузки документов»)
Что касается удобства обслуживания, я использую подходы TI и {include}. Никогда не вызывайте несколько вызовов display(). Мне пришлось бы использовать слишком много сценариев, если бы что-то изменилось.