美文网首页
YII2 多主题

YII2 多主题

作者: froyot | 来源:发表于2015-10-15 15:14 被阅读0次
    • 主题添加
      默认全局主题在配置文件中添加comment配置
     'view' => [
                'theme' => [
                    'basePath' => '@app/themes/{themesName}',
                    'baseUrl' => '@web',
                    'pathMap' => [
                        '@app/views' => '@app/themes/{themesName}',
                    ],
                ],
      ]
    
    • 多模块定义主题

    如果有多个不同的模块,想要在不同的模块中设置不同的模板,在模块的入口文件中添加

            \Yii::$app->view->theme = new \yii\base\Theme([
                'pathMap' => ['@app/views' => '@app/admin/views'],
                'baseUrl' => '@web',
            ]);
    
    • 文件机制
      YII2中主题layout文件机制,如果定义了重新定义了@app/views,则在该目录下搜索layout文件夹中的布局文件,如果没有,则在默认文件中寻找。其他页面的view文件也是如此。

    • 注意
      如果你跟我一样,将themes文件放置在app根目录内,而网站更目录是@app/web,那么还需要对主题的静态文件做稍微修改。
      YII2中,web可以访问的目录是限制在@web目录下。所以以上情况需要将主题的静态文件使用Assets发布。

    比如主题的路径@app/themes/tfviolet,在该目录下(该目录下其他目录内也可以)建立一个ThemeAsset文件

    namespace app\themes\tfviolet;
    
    use yii\web\AssetBundle;
    
    class ThemeAsset extends AssetBundle
    {
        public $sourcePath = '@app/themes/tfviolet/static';
        public $css = [
    
            'css/materialize.min.css',
            'css/style.css'
        ];
    
        public $js = [
            'js/materialize.min.js'
        ];
    }
    

    注意,一定要定义sourcePath,只有这样才能将sourcePath的所有文件发布到asset目录下。发布的目录是@basthPath/asset
    定义sourcePath之后,该Assets的baseUrl, basePath则是无效的,被AssetManage覆盖。

    相关文章

      网友评论

          本文标题:YII2 多主题

          本文链接:https://www.haomeiwen.com/subject/ijzocttx.html