是否有一个HTML专用的模板系统?

时间:2010-07-14 16:16:16

标签: php html clojure templating

我已经开始编写clojure,我对Enlive印象非常深刻。我真正喜欢的一件事是Enlive使用仅限html的模板。所以模板是一个带有html的文件,以.html结尾,就像那样简单。它被解析成一个dom树,然后那个dom树被clojure / enlive,组合,动态等操纵。在html模板文件中没有语法,一个非常干净的分离。

通过javascript完成的类似系统的另一个例子是PURE

在PHP中有类似的东西吗? 或者,一般来说,任何做html-only模板的方法?

5 个答案:

答案 0 :(得分:4)

着迷于听到Enlive。几年来我一直在考虑这个概念并且共同攻击something in PHP,它们共享一些原则:模板是纯HTML,你可以通过使用CSS或者使用CSS将内容寻址到文档中的特定节点来“填充”它们。 XPath的。

$t = new Template('yourfile.html');
$t->fill('#nav',$someMarkup);
$t->fill('#header',$otherMarkup);

我还试验了将一些内容分成各种类型的“样式表”的一些条款......好吧,“样式表”是错误的单词。我称之为内容寻址表(该项目称为CAST,用于内容寻址式样式)。 CAS看起来像你可能期望的那样:

.col #foot {
    content: 'foot';
}

#content {
    content: file_get_contents('pangolin.txt');
}

假设内容的值是PHP表达式。设置PHP的一些规定也适用于选择器。

运行tarball中的cssfill.php脚本(最佳调用可能是./cssfill.php pangolin.cas pangolin.html,您可能需要更改cssfill.php中php解释器的路径),看看输出,与输入文件进行比较。

如果这篇文章对你的想法产生了任何热情,请随时告诉我。我一直在想这是不是一个疯狂的想法,或者它是否有一个地方,如果它有,我很乐意将它变成一个精心发布的开源项目,而不是随机扔到互联网上的tarball。

答案 1 :(得分:2)

您可以查看 phptal.org 。它是使用HTML标记的PHP模板引擎。 但它并不那么快。

您还可以查看其他项目,例如 twig-project.org 女巫更快。

答案 2 :(得分:1)

结帐PHPTAL。 PHPTAL是PHP5的XML / XHTML模板库,它提供了编译模板和细粒度缓存。 模板以纯XML / HTML标记定义。

<div class="item" tal:repeat="item itemsArray">
    <span tal:condition="item/hasDate" tal:replace="item/getDate"/>
    <a href="${item/getUrl}" tal:content="item/getTitle"/>
  <p tal:content="value/getContent"/>
</div>

答案 3 :(得分:1)

有趣的开始。但是我印象深刻的是为什么我们不能使用不同的模板和样本文本来改变视图和元素的不同状态 - 并提取代码来创建现有的模板系统或者只是填充内容。找到工作流程感到非常复杂 - 不要将html与php / js混合,也不要编写抽象模板系统。需要很多大脑 - 没有简单的可视化的很多通信。

答案 4 :(得分:0)

我觉得Psttt! php的模板引擎正是你想要的,它保持你的html模板完好无损,让你更好地重用你的htmls。

这里的完整源代码http://github.com/givanz/psttt