VIEWS自带头信息,LAYOUT,使用HOOK
本帖最后由 sszwei 于 2015-8-9 13:25 编辑虽然以前玩过CI2.0,但那时候并未深入。
最近在做个项目,觉得CI3.0的VIEWS和KOHANA确实像,所以做了个小功能给需要的朋友
预先HOOK一个post_controller_constructor,以便调用header footer需要的参数
$this->CI->views_data = array();/*单页面全局变量,作用于VIEWS*/
具体方法自行扩展
再使用post_controller,载入一个LAYOUT
$views = array();
$views['header'] = $this->Router->fetch_class() === 'admin' ? 'admin_header' : 'header';
$views['content'] = _is_mobile() ? $this->Router->fetch_class().'/'.$this->Router->fetch_method().'_mobile' : $this->Router->fetch_class().'/'.$this->Router->fetch_method();
$views['footer'] = $this->Router->fetch_class() === 'admin' ? 'admin_footer' : 'footer';
foreach($views as $val) {
$test_val = $this->Router->fetch_class().'/'.$this->Router->fetch_method().'-'.$val;
/*舍弃固定头部/尾部,配置文件内*/
if(in_array($test_val, $this->CI->config->item('website_outdisplay', 'xdd'))) {
continue;
}else{
$val = _is_mobile() ? $val.'_mobile' : $val;
}
$this->CI->load->view($val, $this->CI->views_data);
}
毕竟不是非常大的项目 所以例外的header footer还是非常少的,各位也可以在这上面进行扩展改进,只是给个思路。
额。。我不能编辑自己帖子?
$views还能扩展个左边栏
_is_mobile 线上很多成熟代码,直接区分移动端与PC端
主要为了多模板都共享一个data变量数组。。有好方法的各位请回帖
排除header footer主要使用配置文件,也可以使用全局DB config操作。。
页:
[1]