【yii】让module支持theme

yii支持module和theme,分别都有不少文章,可是如何更好的结合起来,不多有人关注。php


yii提供了一个默认的方式,即在webroot的theme目录下增长一个module目录解决。web

wKioL1MEkeeymsGEAAA2ob1dztU932.jpg



默认方案知足了大部分人的须要,可是都说是模块了,确定要通用啊。那为了更好的知足通用性,确定但愿吧模块的一些主题内容放在模块本身的目录下。app

wKioL1MEk8-hTMnRAAFokg9yeT8489.jpg

好吧,let me try。在module的类里面重载下面的函数便可。yii

public function getViewPath()
    {
        // 存在主题的话,去查看module有没有对应的
        if(yii::app()->theme!==null)
        {
            $viewPath = dirname(__FILE__).DIRECTORY_SEPARATOR.'themes'.DIRECTORY_SEPARATOR.yii::app()->theme->name;
            if(file_exists($viewPath))
            {
                return $viewPath.DIRECTORY_SEPARATOR.'views';
            }
        }
        return parent::getViewPath();
                                             
    }



说明下:ide

  • 若是在配置里面没有设置了theme的话,按yii默认处理,即读取模块的views目录。函数

  • 若是设置了theme,会去模块的主题目录下查找对应的,存在的话,直接设置,没有的话,仍是按照yii默认处理,即去应用的主题目录下查找模块目录。blog

相关文章
相关标签/搜索