yii2框架--yii2的主题化设计(十九)

最近发现漏了很重要的一章章节知识点--关于yii2的主题化设计。所谓的主题话设计简单点说就是通过设置不同的模板主题,可以快速切换,无需更改视图渲染代码的方法。

在yii2中使用主题,首先要配置主题,在components中

'view' => [
    'theme' => [
        'basePath' => '@app/themes/blue',
        'baseUrl' => '@web/themes/blue',
        'pathMap' => [
            '@app/views' => '@app/themes/blue',
        ],
    ],
]
yii\base\Theme::baseUrl:指定主题资源的基准URL。也就是指定模板在哪一个目录下的位置
yii\base\Theme::basePath:指定包含主题资源(CSS, JS, images, 等等)的基准目录。
yii\base\Theme::pathMap:指定视图文件的替换规则。这个很重要。

主题化模块
要主题化模块,yii\base\Theme::pathMap 可以配置成下面这样:
'pathMap' => [
    '@app/views' => '@app/themes/blue',
    '@app/modules' => '@app/themes/blue/modules', // <-- !!!
],
它允许你将 @app/modules/blog/views/comment/index.php 主题化成 @app/themes/blue/modules/blog/views/comment/index.php。
首先根据路由,可以去寻找默认的views文件位置,然后键@app/views去匹配对应位置,如果找的到对应的views文件位置,则直接就用匹配的模板主题,如果找不到,那就用默认的主题,也就是键@app/views所在位置的视图。

如果我们按照模块设计来做,那么默认对应的views视图文件应该是在@app/modules的views中,那么我们可以重新定义一个模块化主题位置@app/themes/blue/modules,那么就会将模块化主题的模板定位到这个blue的蓝色主题。

主题化小部件
要主题化小部件,你可以像下面这样配置 yii\base\Theme::pathMap:
'pathMap' => [
    '@app/views' => '@app/themes/blue',
    '@app/widgets' => '@app/themes/blue/widgets',
]
这将允许你将 @app/widgets/currency/views/index.php 主题化成 @app/themes/blue/widgets/currency/index.php。

主题继承
有的时候,你可能想要定义一个基本的主题,其中包含一个基本的应用外观和体验,然后根据当前的节日,你可能想要稍微地改变一下外观和体验。 这个时候,你就可以使用主题继承实现这一目标,主题继承是通过一个单视图路径去映射多个目标, 例如,
'pathMap' => [
    '@app/views' => [
        '@app/themes/christmas',
        '@app/themes/basic',
    ],
]
在这种情况下,视图 @app/views/site/index.php 将被主题化成 @app/themes/christmas/site/index.php 或者 @app/themes/basic/site/index.php, 这取决于哪个主题文件存在。假如都存在,那么第一个将被优先使用。在现实情况中, 你会将大部分的主题文件放在 @app/themes/basic 里,而一些自定义的放在 @app/themes/christmas里




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值