【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

相關文章
相關標籤/搜索