Yii2创建多界面主题(Theme)的方法


Posted in PHP onOctober 08, 2016

本文实例讲述了Yii2创建多界面主题(Theme)的方法。分享给大家供大家参考,具体如下:

Yii2界面主题上的设计总体上和Yii1.x保持一致,区别在于两个地方:

1. 由于Yii2引入了独立的视图(View)类,因此界面主题(Theme)也交由视图来管理;

2. 视图文件和Web资源在目录上做了分离(在应用程序模板中,分别对应于views和web目录)

以高级应用程序模板为例,

首先在frontend/views和frontend/web目录下分别创建一个themes/{your theme name}目录,比如themes/basic。

然后在应用程序配置中,修改配置如下:

'view' => [
  'theme' => [
    'pathMap' => ['@frontend/views' => '@frontend/themes/basic/views'],
    'baseUrl' => '@web/themes/basic',
  ],
],

修改AppAssets的$baseUrl变量为:

class AppAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web/themes/basic';
...
}

最后在views/themes/basic下面创建页面(如site.php),在web/themes/basic下面创建资源(如css/site.css)。

这样,你就可以使用这个新建的界面主题了,在渲染视图时,Yii2会首先查找你定义的theme目录,然后查找默认目录。

要创建多界面主题,只需要按相同步骤在themes目录下添加新的theme,比如themes/advanced。

如果要在视图文件中显式引用某个界面主题下的资源,可以使用 $this->theme->baseUrl ...

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP截取中文字符串的问题
Jul 12 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
推荐个功能齐全的发送PHP邮件类
Jan 03 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
五个PHP程序员工具
May 26 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
php实现singleton()单例模式实例
Nov 06 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
php支付宝系列之电脑网站支付
May 30 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 PHP
php微信开发之自定义菜单完整流程
Oct 08 #PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
Oct 08 #PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 #PHP
ThinkPHP发送邮件示例代码
Oct 08 #PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
Oct 08 #PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 #PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 #PHP
You might like
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
懒加载实现的分页&&网站footer自适应
2016/12/21 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
Python进程间通信用法实例
2015/06/04 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
创业计划书的主要内容有哪些
2014/01/29 职场文书
食品安全演讲稿
2014/09/01 职场文书
单位介绍信格式
2015/01/31 职场文书
社区节水倡议书
2015/04/29 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
一起来学习Python的元组和列表
2022/03/13 Python