修改应用的配置文件(protected/config/main.php)中加入

return array(

’theme’=>’basic’,

);

所有的视图文件必须位于views下 ,布局视图文件在views/layouts下 ,和系统视图文件在views/system下
例如,如果我们要替换PostController的create 视图文件为classic主题下,我们将保存新的视图文件为WebRoot/themes/classic/views/post/create.php。
 当我们调用render或renderPartial显示视图,相应的view(视图)文件以及布局文件将在当前激活的主题里(themes/$themeName/views/)寻找。如果发现,这些文件将被渲染。否则,就后退到应用的视图目录下(application/views/)寻找。
 在一个主题的视图内部,我们经常需要链接其他主题的资源文件。例如,我们可能要显示一个在主题下images目录里的图像文件,

方法为:yii: :app()->theme->baseUrl .'/images/FileName.gif'

使用例子:

WebRoot/

assets

protected/

.htaccess

components/

controllers/

models/

views/

layouts/

main.php

site/

index.php

themes/

basic/

views/

.htaccess

layouts/

main.php

site/

index.php

fancy/

views/

.htaccess

layouts/

main.php

site/

Index.php

如果在应用配置(protected/config/main.php)中配置

return arrray(

'theme' => 'basic',

)

Basic主题将生效,意味着应用的布局将使用 目录 themes/basic/views/layouts 下的视图,
站点的 index 视图将使用 目录 themes/basic/views/site 下的视图。若在主题中没有找到一个视图文件,
它 将后退到目录 protected/views。

Skins(换肤)

使用皮肤来系统化的定制视图中的 widget 的外观,

为了使用皮肤特征,我们首先需要改变应用配置(protected/config/main.php)来安装 widgetFactory 组件,配置如下:

return array(

’components’=>array(

’widgetFactory’=>array(

’class’=>’CWidgetFactory’,

),

),

);

属于同一个
widget 类的皮肤被存储在 一个名字和此 widget 类相同的单个PHP脚本文件中,默认地,所有这些皮肤文件存储在目录
protected/views/skins中,当使用主题时, Yii 将也在主题的视图目录中的 skins
目录寻找皮肤。(例如WebRoot/themes/$themeName/views/skins)

例如,我们创建一个名为 CLinkPager.php 的文件到目录 protected/views/skins(或者themes/$themeName/views/skins), 它的内容如下,

<?php

return array(

'default' => array(//

'nextPageLabel' => '上一页',

'prevPageLabel' => '下一页',

'maxButtonCount' => 10,

//'header' => '',

'cssFile' => Yii::app()->theme->baseUrl.'/css/pager.css'

),

'classic' => array(

'nextPageLabel' => '上一页classic',

'prevPageLabel' => '下一页classic',

//'header' => '',

'maxButtonCount' => 5,

'cssFile' => Yii::app()->theme->baseUrl.'/css/pager1.css',

),

);

?>

在上面,我们 CLinkPager widget 创建了两个皮肤: default 和 classic。 前者是我们不明确指定 CLinkPager 的 skin属性时使用的皮肤,
而后者是其skin属性被指定为 classic 时使用的皮肤。例如,在下面的视图代码中,
第一个 pager 将使用 default 皮肤而第二个使用 classic 皮肤:

<?php $this->widget('zii.widgets.CListView', array(

'summaryText' => '显示 {start}-{end} of {count} result(s).',

'pager' => array(),

'dataProvider'=>$dataProvider,

'itemView'=>'_view',

)); ?>

<?php $this->widget('zii.widgets.CListView', array(

'summaryText' => '显示 {start}-{end} of {count} result(s).',

'pager' => array('skin'=>'classic'),

'dataProvider'=>$dataProvider,

'itemView'=>'_view',

)); ?>

yii主题的更多相关文章

  1. YII 主题

    heming是一个在Web应用程序里定制网页外观的系统方式.通过采用一个新的主题,网页应用程序的整体外观可以立即和戏剧性的改变. 在Yii,每个主题由一个目录代表,包含view文件,layout文件和 ...

  2. YII 主题设置

    节日不同,站点显示不同主题.就是解决问题. 也制作多套视图. 不是必需为全部页面设置主题,假设没有.就依照正常视图显示 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...

  3. Yii 2.x 多主题 - 多语言 配置

    语言:只要在原来模板的位置建立语言目录 多主题:要重新定义模板的根目录

  4. PhpStorm 8.x/9.x 快捷键设置/个性化设置,如何多项目共存?如何更换主题?

    1."自定义"常用快捷键(设置成跟Eclipse差不多) 按照路径:File -> Settings -> Appearance & Behavior -> ...

  5. yii模块下面的组件

    模块的定义就不写了,直接进入主题看目录和文件: application/modules/client/controllers/UserController.php <?php class Use ...

  6. yii开发一个web程序的基本流程

    1. 创建目录结构.在前面的章节Creating First Yii Application写的yiic工具可以帮助我们快速完成这步. 2. 配置 application.就是修改applicatio ...

  7. Yii的学习(1)--安装配置

    之前在sina博客写过Yii的文章,来到博客园之后,没再写过关于Yii的文章,正好端午假期没啥事,就结合以前的博客,Yii的官方文档,再加上最近的关于Yii的收获总结一下,写个系列~~ Yii是一个基 ...

  8. yii和wp做博客

    第一步,安装yii和wp: 第二步,创建protected/components/ExceptionHandler.php文件 <?php class ExceptionHandler { pu ...

  9. yii 多模板

    main.php: //替换所有模板 //加载文件名为first的模板 //       'theme'=>'theme1', 'components'=>array(           ...

随机推荐

  1. 解决js输出汉字乱码问题

    当我们需要使用js输出汉字时,偶然会出现输出的中文汉字乱码的情况,在网上收了很多解决方案 1.在mata中加 <meta content="text/html; charset=utf ...

  2. Django--django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE

    Django序列化时遇到错误: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESP ...

  3. 测试教程网.unittest教程.4. 实例: 读取测试数据并测试弱密码

    From: http://www.testclass.net/pyunit/test_example_2/ 背景 接上一节的弱密码例子,我们的用例尽管运行的不错,但还是有点问题. 假如我们需要增加一些 ...

  4. 数字序列中某一位数字(《剑指offer》面试题44)

    由于这道题目在牛客上没有,所以在此记录一下. 一.题目大意: 数字以0123456789101112131415…的格式序列化到一个字符序列中.在这个序列中,第5位(从0开始计数,即从第0位开始)是5 ...

  5. 18年春招某编程题:有三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等

    题目描述: 给定三个整数X,Y,Z,要求进行若干次操作使得X,Y,Z相等,操作有两种: 1.从X,Y,Z中选择两个数都加1. 2.从X,Y,Z中选择一个数加2. 求最少需要多少次操作. 题目思路: 1 ...

  6. Memcached在.NET应用程序中的使用

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受 到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有 ...

  7. Python——pandas读取JSON数据,xml,html数据(python programming)

  8. Docker启动一个Centos镜像

    docker镜像的获取与使用 docker中使用centos7镜像 接着上文,我们下载完成一个Centos镜像之后,开始启动 #运行命令 docker run -d -i -t <imageID ...

  9. 廖雪峰Java2面向对象编程-6Java核心类-1字符串和编码

    Java的字符串用String表示 1.String特点: 可以直接使用"..."表示一个字符串,不强制使用new String 内容不可变 String s1 = "h ...

  10. is与==

     is和==的区别 1. id() 通过id()我们可以查看到⼀一个变量表示的值在内存中的地址. a1 = 100 b1 = 100 print(id(a1),id(b1)) #14071247240 ...