在 HTML 中查找自定义标签的出现,执行函数并用函数输出替换标签

发布于 2024-10-21 11:27:30 字数 1279 浏览 2 评论 0原文

这可能是一个非常简单的问题,所以很抱歉没有更具挑战性!

我正在开发一个使用模板系统的内部 CMS。

为了使这个 CMS 尽可能可扩展,我想使用“模块”。因此,在模板文件中,我想放置代表模块的自定义 HTML 标签。

这看起来像:

我通过使用以下方式获取模板文件:

ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();

现在我想浏览 $buffer 的内容,并且对于每次出现 我想 include "moduleName .class.php",创建该类的一个新实例,运行该模块的 getOutput() 函数,并将返回值放在 gt 的位置; 标签曾经是。

我不知道该怎么做...:/有什么想法吗?

如果您不明白,请考虑新闻报道。我可能会编写一些代码来查看数据库中的新闻表并列出 10 条最新新闻报道的列表,然后将其输出到 html

    。我想对其进行抽象,以便它可以在许多页面上使用。因此,在我的主页模板中,我可能有标签 。现在,当我访问主页时,我需要查看主页 tpl 文件,我会找到其中显示 的位置,我将提取 < code>name 属性并包含一个基于该名称的类(在本例中为 newsTicker.class.php)。这将有一个名为 getOutput() 的函数,因此我将能够执行类似于以下内容的操作: $output = $current_module->getOutput(); 然后我需要返回我的 tpl 文件并将原始 更改为 $output 的内容。

感谢您的帮助。 :)

汤姆

This is probably a really easy question, so apologies for not being more challenging!

I am developing an in house CMS which uses a templating system.

To make this CMS as extendable as possible I want to use "modules". Hence in the template files I want to put custom HTML tags which represent modules.

This will look like:

<p><Module name="newsTicker" property="value" anotherProperty="anotherValue" /></p>

I get my template file by using:

ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();

Now I want to go through the contents of $buffer and for every occurance of <Module name="moduleName" /> I want to include "moduleName.class.php", create a new instance of that class, run the getOutput() function of that module and put the return value in where that <Module /> tag used to be.

I have no idea how to go about that... :/ Any ideas?

If you don't understand think about a news ticker. I may write some code that looks through the news table in my database and makes a list of the 10 latest news stories, then it outputs it to a html <ul>. I want to abstract this so that it can be used on many pages. So in my template for the home page I might have the tag <Module name="newsTicker" />. Now when I visit the home page I need to look through the home page tpl file and I'll find where it says <Module name="newsTicker" />, I'll extract the name attribute and include a class based on that name (in this case it will be newsTicker.class.php). This will have a function called getOutput() so I will be able to something similar to: $output = $current_module->getOutput(); and then I need to go back to my tpl file and change the original <Module name="newsTicker" /> for the contents of $output.

Thanks for your help. :)

Tom

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

姐不稀罕 2024-10-28 11:27:30
  • 使用 DOMDocument 查找 Module 元素(我个人只会使用小写字母)。
  • 存储 name 属性。
  • include_once 基于 name 属性的类(如果使用自动加载则跳过)。
  • 使用$class = new $name
  • 删除原始 Module DOM 元素和 $class->getOutput()appendChild
  • Use DOMDocument to find Module elements (I would use lowercase only personally).
  • Store name attribute.
  • include_once the class based on name attribute (skip if using autoloading).
  • Use $class = new $name.
  • Remove original Module DOM element and appendChild of $class->getOutput().
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文