2

我对模板有非常具体的任务。我需要扩展标准 Smarty 3 ( 3.1-DEV ) 模板系统以获得自定义 {block} 功能,但保留基本功能(添加/重写、求和等)通常我需要处理每个 {block} 竞争以获得下一个功能:

  • 忽略 {block} 之外的每个模板的内容(模板源无关紧要)
  • 保留对已处理 {block} 内容的“引用”(我想获取在 smarty 析构函数中“显示”的任何块的缓存内容,但不想将其保留在内存中)
  • 具有相同的继承功能(能够获得嵌套块父母等)
  • 保留原生 smarty 缓存系统
  • 并且不要直接修改 smarty 引擎,通过插件和类扩展来实现

我试图创建自定义块函数,但它失去了原生 {block} 上的继承功能,我无法控制显示/处理的内容并在析构函数中获取它的内容。

主要思想是处理所有$smarty->display()$smarty->fetch()调用,收集所有块的内容并保留对其内容的引用,但不会立即显示。

内容必须显示在主 smarty 实例析构函数中。显示的内容必须使用已处理的块进行组装。

可能还有其他一些模板解决方案可以完成这项任务,或者 smarty 中有任何现成的功能,但我找不到。我也不想更改 smarty 模板系统并拒绝使用 php 模板<? if( $a < $b ): ?> <b>Output</b> <? endif; ?>,这对我来说太难看了。

upd:我想用 Smarty 实现“两步视图”,但要简单易行。

谢谢。

4

0 回答 0