可以使用 include 標簽來包含外部的模板文件,使用方法如下:
# 1、 使用完整文件名包含
~~~
<include file="完整模板文件名" />
~~~
> 說明:這種情況下,模板文件名必須包含后綴。
下面我們測試一下子,首先我們在主模板文件中寫入如下的代碼:
~~~
<include file="app/home/theme/default/header.html">
~~~
模板編譯后的結果:
~~~
<?php $this->display( 'app/home/theme/default/header.html' ); ?>
~~~
我們需要定義一個 header.html ,如果沒有定義就會在頁面上收到一個異常提示:
> 模板文件 app/home/theme/default/header.html 不存在
# 2、 使用變量定義完整的文件
~~~
{~$sHeadTpl = $APP->apptheme_path.'/'.$APP->apptheme_name.'/header.html' }
<include file="$sHeadTpl">
~~~
說明:**$APP** 為系統提供的當前 APP 實例,這里可以讀取當前模板路徑地址,比如我開發的環境下,**$sHeadTpl** 的路徑為:
~~~
{項目地址}/app/home/theme/default/header.html
~~~
模板編譯后的結果:
~~~
<?php $sHeadTpl = $APP->apptheme_path.'/'.$APP->apptheme_name.'/header.html'; ?>
<?php $this->display( $sHeadTpl ); ?>
~~~
> 說明:效果和上面一樣,同樣需要定義 header.html。
# 3、包含當前主題下的模板文件
~~~
<include file="文件名" />
~~~
例如 導入當前主題下面的 test.html:
~~~
<include file="test" />
~~~
模板編譯后的結果:
~~~
<?php $this->display( $APP->apptheme_path.'/'.$APP->apptheme_name.'/test.html' ); ?>
~~~
# 4、 包含其他模塊的操作模板
~~~
<include file="模塊名+操作名" />
<include file="模塊名:操作名" />
~~~
模塊和操作名之間的分隔符可以自定義,系統默認為 '_',你可以通過應用配置文件修改 :
~~~
'theme_moduleaction_depr' => '/'
~~~
如果你在配置文件修改的話,那么模塊和操作之間通過文件夾的方式分割,模塊是文件夾,操作是每一個文件。同時,為了降低目錄深度,系統默認使用‘_’,這樣子也比較直觀。
例如,包含public模塊的header操作方法,我們可以在模板文件中使用如下的代碼:
~~~
<include file="public+header" />
~~~
模板編譯后的結果:
~~~
<?php $this->display( $APP->apptheme_path.'/'.$APP->apptheme_name.'/public_header.html' ); ?>
~~~
# 5、包含其他模板主題的模塊操作模板:
~~~
<include file="主題名@模塊名+操作名" />
<include file="主題名@模塊名:操作名" />
~~~
例如,包含 blue 主題的 blog 模塊 的 view 操作模版:
~~~
<include file="blue@blog+view" />
~~~
模板編譯后的結果:
~~~
<?php $this->display( $APP->apptheme_path.'/'.$APP->apptheme_name.'/blog_view.html' ); ?>
~~~
注意:如果外部模板有所更改,模板引擎會像主模板一樣重新編譯模板,所以你不用擔心子模板是否更新。
# 6、函數表達式支持:
~~~
<include file="($strPath.'/'.$strName)" />
<include file="template+tpl('header')" />
<include file="tpl('header')" />
<include file="$oHello:world('header')" />
~~~
模板編譯后的結果:
~~~
<?php $this->display( ($strPath.'/'.$strName) ); ?>
<?php $this->display( template::tpl('header') ); ?>
<?php $this->display( tpl('header') ); ?>
<?php $this->display( $oHello->world('header') ); ?>
~~~
# 7、默認文件文件查找:
如果當前主題文件不存在,系統會自動去尋找默認的主題,還支持自定義的擴展主題,例如:
~~~
<include file="blue@blog+view" />
~~~
> 說明:如果 blue 主題下面沒有blog_view.html,那么系統會自動去尋找 default 目錄下面的主題。
自定義擴展主題例子,入口文件定義:
~~~
\Q\base\app::run ( [
'project_path' => PROJECT_PATH,
'appthemebackup_path' => PROJECT_PATH.'/mytheme',
] );
~~~
# 8、子模板合并到主模板:
默認情況下,子模板有自己的編譯文件,主模板和子模板分別緩存到對應的文件。系統在加載的時候,會載入多個緩存文件,從而會增加 io 開銷。這個時候我們可以配置將子模板的緩存寫入到住模板中去合并成為一個文件,加載的時候就一個文件。
~~~
'theme_cache_children' => true
~~~
> 注意:合并到一個文件好處就是降低 io 開銷,但同時也會存在子模板更新了,主模板不會更新的情況。大家根據項目來決定是否開啟這個功能。
- 關于 QueryPHP
- 獲取 QueryPHP
- 環境要求
- 許可協議 Free
- 執行流程 MVC
- 命名規范 $sName
- 目錄結構 DIR
- 單一入口 index.php
- 響應客戶端請求 URL
- 命名空間與自動載入 Autoload
- 路由
- 路由導入
- 批量導入
- 參數正則
- 分組定義
- 路由綁定
- 路由域名
- 分層控制器
- 默認和初始化APP
- 默認控制器和方法
- url 模式
- url 生成
- url 偽靜態
- url 重寫
- url 重定向
- 控制器綁定
- 方法器分層
- 控制器 __init
- 控制器方法交互
- 模板引擎語法
- C變量輸出 $sName
- C變量支持函數和方法 $sName|trim
- C快捷輸出 ~
- C標簽簡化 Css & Javascript
- C默認值 eq 三元運算符
- C變量運算符 +-
- 變量遞增遞減 ++--
- C循環數據 list
- N變量賦值 assign
- N循環數據 list
- N循環數據高級版 lists
- C循環數據 while
- N循環數據 while
- C循環數據 for
- N循環數據 for
- C條件判斷 if
- N條件判斷 if
- 標簽嵌套無限層級
- N循環流程 break & continue
- N使用 PHP 代碼
- N包含子模板 include
- J模板引擎 intro
- J條件判斷 if
- J循環數據 each
- J變量 & 表達式
- J變量支持函數和方法 hello|test
- J默認值 eq 三元運算符
- J框架前端組件 jquery.queryphp.js
- J前端 CSS 規范
- J前端 JS 規范
- 保護標簽自身 tagself
- 數據庫
- 數據庫配置
- 執行原生 sql 語句
- 數據庫事務
- 數據庫構造器 prefix
- 數據庫構造器 table
- 數據庫構造器 forceIndex
- 數據庫構造器 where
- 數據庫構造器 bind
- 數據庫構造器 join
- 數據庫構造器 union
- 數據庫構造器 orderBy
- 數據庫構造器 groupBy
- 數據庫構造器 having
- 數據庫構造器 distinct
- 數據庫構造器 aggregate
- 數據庫構造器 limit
- 數據庫構造器 forUpdate
- 數據庫構造器 columns
- 數據庫構造器 reset
- 數據庫集合查詢
- 數據庫查詢數據 get
- 數據庫查詢多條數據 getAll
- 數據庫查詢單條數據 getOne
- 數據庫查詢聚合查詢 aggregate
- 數據庫寫入數據 insert
- 數據庫寫入數據 insertAll
- 配置
- 配置格式
- 慣性配置
- 配置文件
- 讀取配置
- 設置配置
- 刪除配置
- 日志
- 日志配置參數
- 日志路徑
- 日志過濾器
- 日志處理器
- 緩存
- 緩存配置參數
- 緩存路徑
- 緩存指定時間
- COOKIE
- COOKIE 配置參數
- 開發調試
- 頁面 trace