改造Smarty,让其支持layout

使用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);
		}
	}
}
?>

继续阅读“改造Smarty,让其支持layout”