如何删除父模板中附加到块的内容?

时间:2014-06-13 20:26:32

标签: inheritance smarty template-engine

我有三个模板:

base.tpl

{block name="myBlock"}
    base
{/block}

child.tpl

{extends file="base.tpl"}
{block name="myBlock" append}
    child
{/block}

grandchild.tpl

{extends file="child.tpl"}
{block name="myBlock" append}
    grandchild
{/block}

呈现grandchild.tpl时的输出是

base
child
grandchild

但我想跳过child.tpl添加的内容,所以我想得到这个输出:

base
grandchild

问题是,这需要在不更改base.tplchild.tpl(均来自第三方)的情况下完成,我不能只在base.tpl中扩展grandchild.tpl ,因为child.tpl中有更多含有{{1}}内容的块,我希望在结果中有。

1 个答案:

答案 0 :(得分:3)

在这种情况下,您应该简单地更改base.tplgrandchild.tpl中的块名称,并保持child.tpl不会更改。

<强> base.tpl

{block name="myBlock2"}
    base
{/block}

<强> child.tpl

{extends file="base.tpl"}
{block name="myBlock" append}
    child
{/block}

<强> grandchild.tpl

{extends file="child.tpl"}
{block name="myBlock2" append}
    grandchild
{/block}

现在输出:

  


  孙子

编辑 - 在评论信息之后,base.tpl也无法修改

您似乎唯一需要做的就是从append删除grandchild.tpl并保留其他2个文件。

<强> grandchild.tpl

{extends file="child.tpl"}
{block name="myBlock"}
    grandchild
{/block}

输出是:

  


  孙子

如你所愿