|
本帖最后由 fzbk 于 2012-5-26 13:58 编辑
这几年都在写java,论坛也少来了。
正题,header,footer(html公用头、尾)如何自动引入,这里使用的是 hook : display_override
1、在config.php开启hook PHP复制代码 $config['enable_hooks'] = TRUE; 复制代码
2、hooks.php添加代码
PHP复制代码 $hook['display_override'] = array(
'class' => 'MyDecorate',
'function' => 'init',
'filename' => 'MyDecorate.php',
'filepath' => 'hooks'
//'params' => array('beer')
);
复制代码
3、hooks目录新增文件MyDecorate.php
PHP复制代码 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @author Zelipe
*
* 2012-05-26
*/
class MyDecorate {
private $CI;
public function __construct () {
$this->CI =& get_instance ();
}
public function init () {
$html = '';
// header html, 'isAjax' from helper
if(!isAjax ())
$html .= $this->CI->load->view('header', null, true);
// body html
$html .= $this->CI->output->get_output();
// footer html
if(!isAjax ())
$html .= $this->CI->load->view('footer', null, true);
$html = str_replace(' ', '', $html); // 过滤代码缩进
$this->CI->output->_display ($html);
}
} 复制代码
其中 isAjax() 为 helpers,可直接将此方法定义在MyDecorate.php内(可不作判断,如希望控制ajax不引入公用文件则保留)
PHP复制代码 // 是否为 ajax 请求
function isAjax () {
return (isset($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');
} 复制代码
4、views 目录新增header.php, footer.php。
5、完
|
|