分模块主题功能的实现及模板文件名解析自定义的建议

浏览:407 发布日期:2017/03/09 分类:ThinkPHP5专区
我做一个项目,主题目录结构如下:(index,common,admin是模块)
THEME_PATH/index/主题1/模板(文件.目录.设置等)..
THEME_PATH/index/主题2/模板(文件.目录.设置等)..
.......
THEME_PATH/index/主题x/模板(文件.目录.设置等)..

THEME_PATH/common/模板(文件.目录.设置等)..

THEME_PATH/admin/主题a/模板(文件.目录.设置等)..
THEME_PATH/admin/主题b/模板(文件.目录.设置等)..
.......
THEME_PATH/admin/主题n/模板(文件.目录.设置等)..

要实现这样的功能,用'view_path' 或'view_base'设置都无法办到,只能修改核心文件think\template.php的private function parseTemplateFile()和think\view\drive\think.php的private function parseTemplate(),在其中增加一个条件判断            if (defined('THEME_PATH')) { 
                $module = isset($module) ? $module : Request::instance()->module();
                if ( strpos($template, ':') ) { 
                    list($theme, $template) = explode(':', $template,2);
                }
                if ( isset($module) && !isset($theme) ) { 
                    $theme = \think\Config::get($module.'_theme');
                }
                if (isset($module)){
                    $path = empty($theme) ? THEME_PATH . $module . DS :  THEME_PATH . $module . DS . $theme . DS;
                }else{
                    $path = THEME_PATH;
                }
            }
由此建议,核心模板文件名解析是否可以开一个可使用自定义解析方法的口子,这样就不用更改核心文件了。或者有其它更好方式。。。
(此处的think\view\drive\think.php文件可以自定义,但think\template文件牵连大多)
最佳答案
评论( 相关
后面还有条评论,点击查看>>