ThinkPHP 透過 <block> 與 <extend> 標籤實現模板繼承,類似現代模板引擎的區塊覆寫機制。本文示範父模板定義區塊、子模板繼承並覆寫的完整流程。
<!-- Tpl/Public/base.html -->
<block name="top"></block>
<div style="border:1px solid gray;background:#abcdef;height:100px;">頂部廣告</div>
<block name="body"></block>
<div style="border:1px solid gray;background:#abcdef;height:100px;">底部廣告</div>
<!-- 繼承父模板 -->
<extend name="Public:base" />
<!-- 覆寫 top 區塊 -->
<block name="top">
<include file="Public:header" />
</block>
<!-- 覆寫 body 區塊 -->
<block name="body">
<body>
<p>這裡是渲染頁面!!!</p>
{__CONTENT__}
</body>
</block>
<extend> 載入父模板<block> 標記為可覆寫區塊<block> 內容替換父模板對應區塊{$block_content} 可獲取父區塊原內容<if> 動態決定繼承哪個父模板| 特性 | Layout({__CONTENT__}) | 模板繼承(block/extend) |
|---|---|---|
| 靈活度 | 單一佔位點 | 多區塊獨立覆寫 |
| 結構 | 頁面級佈局 | 元件級組合 |
| 適用場景 | 整站統一框架 | 複雜頁面結構變化 |