Каждый раз, когда я начинаю новый проект, я обнаруживаю, что переделываю и переосмысливаю свою собственную библиотеку шаблонов.Я использую некоторые влияния от dom-манипуляций, но не хочу делать слишком много функций, чтобы он по-прежнему загружался быстро.
Вот так выглядит моя текущая система шаблонов:
Этофайл макета:
<body>
<div id="content">
<block:content>This is a default text</block:content>
</div>
<div id="sidebar">
<widget:advertisement type="wide" />
<block:sidebar this_param="is_passed_on" />
</div>
</body>
Как вы можете видеть, я сделал 2 вида "дополнительных" тегов, которые будут заменены при последующей публикации шаблона.Я загружаю этот макет следующим образом:
$this->template->load("layout");
Затем я могу манипулировать тегами блока следующим образом:
$this->template->content = "I'm overwriting the default text";
$this->template->content->prepend("I forgot something");
$this->template->sidebar->view("viewfile_1", array(/*data*/));
$this->template->sidebar->view("viewfile_2", array(/*data*/));
Я могу установить текст вручную, я могу загрузить несколько видов в 1 блок,Я могу использовать несколько функций, похожих на dom, таких как prepend, append, ...
Я даже могу расширить шаблон с помощью дополнительных параметров макета, например:
$this->template->content->extend("2columns");
Этот файл макета может выглядетьнапример:
<div><block:left/></div>
<div><block:right/></div>
Так что вместо блока контента у меня теперь есть дополнительный левый и правый блок для размещения контента.
Я также создал тег виджета, который загружает определенный виджеткласс (/ widgets / реклама в данном случае).Необязательные параметры, добавленные в теги, передаются в файлы представлений и / или функцию отображения виджетов вместе с массивом данных прямого прохождения.
Короче говоря, именно так теперь работает моя система.На самом деле я не нашел других подобных систем, чтобы получить вдохновение.Не могли бы вы, ребята, дать мне совет, чтобы я мог собрать одну приличную систему, которую я смогу продолжать использовать?