程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> 改造Smarty,讓其支持layout

改造Smarty,讓其支持layout

編輯:PHP基礎知識
 

使用smarty做頁面模版時,smarty並沒有提供一個可以做整體布局的方法,每個頁面都要寫多個include共同的模版塊。可以對smarty進行改造,讓其支持layout機制。

在smarty中建類 MySmarty.class.php
<?php
include_once 'Smarty.class.php';

class MySmarty extends Smarty {
/** @var string 模板所用layout */
public $layouts = false;

public function display($template = NULL, $cache_id = NULL, $compile_id = NULL, $parent = NULL) {
/** 使用 layout 機制 */
if ($this->layouts) {
$this->assign('CONTENT_FOR_LAYOUT', $template);
parent::display($this->layouts, $cache_id, $compile_id, $parent);
// 最後的smarty顯示處理,調用Smarty原始函數
} else {
parent::display($template, $cache_id, $compile_id, $parent);
}
}
}
?>


在模板文件夾建文件夾 layouts,裡面放layout文件,layout文件中用以下方式加載內容
<div class="page_body">{include file="$CONTENT_FOR_LAYOUT"}</div>

實例化smarty時,設置layout文件
$smarty = new MySmarty();
$smarty -> layouts = 'layouts/main.tpl';

在不需要加載layout時,賦值為false停用。
$smarty -> layouts = false;
// 不使用layout
$smarty -> display('index.tpl');

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved