3

Smarty3で作成したテンプレートがいくつかあります。

  1. レイアウトページ
  2. インデックスページ
  3. インクルードページ

layout.tpl:

{block "css"}{/block}
{block "js"}{/block}
{block "content"}{/block}

index.tpl:

{extends "layout.tpl"}
{block "content"}
content text
{include "include.tpl"}
{/block}

include.tpl

{block "js" append}
include some extra js files for this included content
{/block}
include text

しかし、コンパイラの例外が発生しました。

致命的なエラー:キャッチされない例外「SmartyCompilerException」とメッセージ「テンプレートの構文エラーinclude.tpl {block"js"prepend}」の短縮属性が多すぎます

子テンプレートに含まれている場合でも、含まれているテンプレートでブロック追加を使用できませんか?

このような方法でブロック追加を使用できると非常に役立つと思います。または、これを行う他の方法があるかもしれません。ありがとう!

4

2 に答える 2

2

Smarty のテンプレート継承は、パーサーが {include} を認識する前に処理されます。したがって、含まれているテンプレートの {block} を処理できません。つまり、含まれているテンプレートが別のテンプレート自体を拡張しない場合を除きます。

于 2011-06-06T21:26:30.387 に答える