这可能是一个非常简单的问题,所以对于不再具有挑战性而道歉!
我正在开发一个使用模板系统的内部CMS。
为了使这个CMS尽可能扩展,我想使用“模块”。因此,在模板文件中,我想放置代表模块的自定义HTML标记。
这看起来像是:
<p><Module name="newsTicker" property="value" anotherProperty="anotherValue" /></p>
我使用以下方法获取模板文件:
ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();
现在我想查看$buffer
的内容,并且对于每个<Module name="moduleName" />
我想要include "moduleName.class.php"
的出现,创建该类的新实例,运行getOutput()
该模块的函数,并将返回值放在<Module />
标记的位置。
我不知道该怎么做......:/任何想法?
如果您不理解新闻自动收报机。我可以编写一些代码来查看我的数据库中的新闻表,并列出10个最新的新闻故事,然后将其输出到html <ul>
。我想抽象它,以便它可以在许多页面上使用。因此,在我的主页模板中,我可能会使用标记<Module name="newsTicker" />
。现在当我访问主页时,我需要查看主页tpl文件,我会找到它所说的<Module name="newsTicker" />
,我将提取name
属性并包含一个基于该名称的类(在这种情况下,它将是newsTicker.class.php
)。这将有一个名为getOutput()
的函数,因此我将能够执行类似于$output = $current_module->getOutput();
的操作,然后我需要返回到我的tpl文件并更改原始<Module name="newsTicker" />
的内容$output
。
感谢您的帮助。 :)
汤姆
答案 0 :(得分:2)
Module
元素(我只会亲自使用小写)。name
属性。include_once
基于name
属性的类(如果使用自动加载则跳过)。$class = new $name
。Module
的原始appendChild
DOM元素和$class->getOutput()
。