PHP的HTML模板语言

时间:2012-07-25 00:25:09

标签: php html templates

我正在使用简单的模板集成制作php内容管理系统,我找不到任何好的模板语言。目前我正在使用xml模板并使用php DOM解析它们。模板的外观如下:

<div class="one_fourth">
    <h4 class="section-header"><span><CMS_STRING type="string" name="title" title="Title" /></span></h4>
    <p><CMS_STRING type="string" name="body" title="Body text" tooltip="" /></p>
    <p><CMS_STRING type="link" name="link" title="Link" /></p>
</div>

在php中,我使用DOM getElementsByTagName解析所有CMS_STRING标记,然后从数据库中为访问者提取值或为admin生成可编辑的输入。

xml的一个问题是我不能在属性中使用标签,例如:

<a href="<CMS_STRING name="url" />"></a>

另一个问题是php DOM引用转义。它看起来很丑陋,难以理解。假设我想将JSON放在本地化标题的属性中:

<CMS_STRING type="string" name="title" title="{&quot;enUS&quot;:&quot;Title&quot;,&quot;enGB&quot;:&quot;Title&quot;}" />

那么我可以在这里使用其他模板语言?我还需要它来支持xml(例如获取CMS_STRING内部html)。我找到的所有模板语言都预先设置了缓存引擎和其他我不需要的东西。我只需要一个带解析器的简单语言,我会自己处理其他的东西。

感谢。

4 个答案:

答案 0 :(得分:2)

使用PHP Templating Language。你的生活会更好,更快乐,更简单,更快,你周围的人会感谢你世世代代,世界各地的小狗和小猫会死得更少,全球变暖甚至可能会慢下来。

答案 1 :(得分:1)

说出你看过的一些但不能使用的名字,所以我们不会继续建议重复。你看过Smarty了吗?这很棒,听起来可以满足您的需求。

是的,Smarty有缓存,但您不必启用它。您将获得的唯一结果文件是模板的编译版本,但这只是为了提高效率,您可以禁用模板缓存(以换取性能)。

答案 2 :(得分:1)

热门模板引擎:

  • Smarty (过时)

  • Latte (主要由 Nette 社区使用)

  • Twig (主要由 Symfony 社区使用)

  • Mustache (这个模板引擎的官方实现存在于二十多种编程/脚本语言中)

我倾向于支持 Mustache ,主要是因为它有 an official JS version an official Ruby version an official Java version 等。它允许您使用相同的模板前端和后端,这对于首先在后台渲染并在更新时在前景中重新渲染的小部件非常有用。

答案 3 :(得分:0)

有许多模板系统可用TwigSmartyMoustache,当然还有PHP本身。

我喜欢一个真正的模板系统,而​​不是使用普通的旧PHP,如果你不熟悉MVC设计模式,它几乎会迫使你去做它的VC部分,并教你重要性它...我说的很多,因为你仍然可以在其中做商业逻辑,但它们通常会使它变得困难,并使你灰心。

我相信所有这些都内置了缓存,所以执行方面应该和普通的PHP脚本一样快。