CodeIgniter“模板”系统

时间:2011-06-02 15:16:44

标签: php templates codeigniter

每当我开始一个新项目时,我发现自己正在重新思考并重新思考我的自制模板库。我使用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)。标签中添加的可选参数与直接传递的数据数组一起传递给视图文件和/或窗口小部件显示功能。

简而言之,这就是我的系统现在的运作方式。我还没有找到这样的其他系统来从中获取灵感。你能不能给我任何建议,这样我就可以把一个体面的系统放在一起,我可以继续使用?

1 个答案:

答案 0 :(得分:0)

我的方法是:

  • 为布局/文件夹中的每种页面类型创建主要布局(想想家庭,存档,单个帖子,单页的Wordpress布局)
  • 在公共/文件夹中创建公共位接口(想想页眉,页脚,侧边栏,widget_XX,widget_YY)
  • 使用Phil Sturgeon's Template Library(或Spark!)来处理视图。
  • 在每个控制器上,我加载了$ this-&gt;数据中渲染所需的所有数据,并将该对象传递给视图

希望这有帮助!祝你好运。