テンプレートリソースの継承

PHP スクリプトからテンプレートを継承する親子関係を定義するために extends: リソースを使います。詳細は テンプレートの継承 を参照してください。

Smarty 3.1 では、extends: リソースは利用できるすべての テンプレートリソース を使うことができます。利用できるリソースには string:eval: も含みます。 文字列テンプレートリソース を使う場合は、(URLエンコード や base64 で)適切にエンコードするようにしてください。eval: リソースが継承チェインで見つかった場合、「コンパイル済みのファイルを保存しないで!」という要求よりも extends: リソースの要求が優先されます。しかし、継承チェインの中に存在するテンプレートは別々にコンパイルされません。単一のコンパイル済みテンプレートが生成されます。

注意

テンプレートの継承がプログラムで必要な場合は extends: リソースを使うようにしましょう。 PHPスクリプトの中で ng を継承する場合、継承先の子テンプレートで何が起こるのかがわかりづらいからです。継承チェインを扱う場合は、テンプレートを使う方が通常は直感的ですし、柔軟性が増します。

例 16.9. PHPスクリプトからテンプレートの継承を使う


<?php
$smarty->display('extends:parent.tpl|child.tpl|grandchild.tpl'); 

// inheritance from multiple template sources
$smarty->display('extends:db:parent.tpl|file:child.tpl|grandchild.tpl|eval:{block name="fooBazVar_"}hello world{/block}'); 
?>

  

テンプレートの継承 {block}{extends} も参照してください。