Smarty模板:是否可以扩展基本{block}以添加自定义功能?

时间:2012-10-19 18:38:26

标签: php smarty template-engine smarty3

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

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

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

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

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

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

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

感谢。

0 个答案:

没有答案