thinkPHP におけるテンプレートの継承は、クラスの継承に似ています。テンプレートでは、ベース テンプレート (またはレイアウト) を定義し、関連するブロック (ブロック) を定義して、ベース テンプレートのサブテンプレートを継承 (拡張) できます。基本テンプレートで定義されたブロック。
したがって、テンプレート継承の利点は、実際には、ベース テンプレート内のブロックを設計し、サブテンプレート内のこれらのブロックを置き換えることにあります。
各ブロックは <block></block>
タグで構成されます。以下は、基本テンプレートの一般的なブロック デザインです (Web サイトのタイトルのデザインに使用されます):
<block name="title"><title>网站标题</title></block>
ブロック タグは、現在のブロックの名前を識別するために name 属性を指定する必要があります。この識別子は、ブロック内で一意である必要があります。現在のテンプレート はい、ブロック タグには、他のタグや変数を含む任意のテンプレート コンテンツを含めることができます。例:
<block name="title"><title>{$web_title}</title></block>
ブロック内に外部ファイルをロードすることもできます:
<block name="include"><include file="Public:header" /></block>
任意のテンプレートを定義された複数の名前は、非反復ブロックを識別します。たとえば、base.html
ベース テンプレートは以下のように定義されます:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <block name="title"><title>标题</title></block> </head> <body> <block name="menu">菜单</block> <block name="left">左边分栏</block> <block name="main">主内容</block> <block name="right">右边分栏</block> <block name="footer">底部</block> </body> </html>
次に、それをサブテンプレート (実際には現在のエントリ テンプレート) で使用します。ご覧のとおり、継承する必要があるテンプレートを定義するためにサブテンプレートで extend タグが使用されています。extend タグの使用法は include タグと同じです。他のテンプレートもロードします:
<extend name="base" /> <block name="title"><title>{$title}</title></block> <block name="menu"> <a href="/" >首页</a> <a href="/info/" >资讯</a> <a href="/bbs/" >论坛</a> </block> <block name="left"></block> <block name="content"> <volist name="list" id="vo"> <a href="/new/{$vo.id}">{$vo.title}</a><br/> {$vo.content} </volist> </block> <block name="right"> 最新资讯: <volist name="news" id="new"> <a href="/new/{$new.id}">{$new.title}</a><br/> </volist> </block> <block name="footer"> @ThinkPHP2012 版权所有 </block>
または 絶対ファイル パスを使用してロードします
<extend name="Public:base" />
現在のサブテンプレートでは、ブロックのみを定義でき、他のテンプレート コンテンツは定義できません。それ以外の場合は、直接無視されます。基本テンプレートで定義されているブロックのみを定義できます。
たとえば、次の定義が使用される場合:
<extend name="./Template/Public/base.html" />
ナビゲーション セクションは無効になり、テンプレートには表示されません。
サブテンプレートでは、基本テンプレートのブロックの定義をオーバーロードできます。再定義されない場合は、基本テンプレートのブロック定義が使用されることを意味します。空のブロックが指定されている場合は、定義すると、基本テンプレートのブロックの内容を削除することを意味します。上の例では、左側のブロックの内容を削除し、他のブロックを再読み込みしました。
サブテンプレートのブロック定義の順序は任意です。テンプレート継承を利用する場合は、基本テンプレートをどのようにレイアウトしてデザインするかがポイントになります。独自のレイアウト機能と組み合わせることで、より柔軟になります。
関連する推奨事項:
Geek Academy の詳細な ThinkPHP フレームワーク ビデオ チュートリアル以上がThinkphp のテンプレート継承とは何ですか?テンプレート継承の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。