首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 模板繼承機制實作指南

     編輯:PHP 綜合知識

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>

執行流程

  1. 解析子模板,發現 <extend> 載入父模板
  2. 父模板中的 <block> 標記為可覆寫區塊
  3. 子模板同名 <block> 內容替換父模板對應區塊
  4. 最終合併輸出完整 HTML

進階用法

  • 保留父區塊內容:子區塊中使用 {$block_content} 可獲取父區塊原內容
  • 多層繼承:A extend B,B extend C,支援多層級繼承鏈
  • 條件繼承:結合 <if> 動態決定繼承哪個父模板

與 Layout 機制差異

特性Layout({__CONTENT__})模板繼承(block/extend)
靈活度單一佔位點多區塊獨立覆寫
結構頁面級佈局元件級組合
適用場景整站統一框架複雜頁面結構變化

最佳實踐建議

  • 全站通用框架(Header/Footer/Sidebar)用 Layout
  • 頁面內容區塊多變、需局部客製化用模板繼承
  • 兩者可混用:Layout 定義大框架,內容區使用 extend/block 細分
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved