每当我开始一个新项目时,我发现自己正在重新思考并重新思考我的自制模板库。我使用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>
正如您所看到的,我制作了两种“额外”标签,这些标签将在最终发布模板时被替换。我像这样加载这个布局:
$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 / advertise)。标签中添加的可选参数与直接传递的数据数组一起传递给视图文件和/或窗口小部件显示功能。
简而言之,这就是我的系统现在的运作方式。我还没有找到这样的其他系统来从中获取灵感。你能不能给我任何建议,这样我就可以把一个体面的系统放在一起,我可以继续使用?
答案 0 :(得分:0)
我的方法是:
希望这有帮助!祝你好运。