- 1 第一个应用 Hello World
- 2 Yii Web 应用基础
- 3 为应用添加日志
- 4 Hangman 猜单词游戏实例
- 5 URL 管理
- 6 CComponent 组件
- 7 使用 CHtml 创建 Form
- 8 使用 FormModel
- 9 UI 组件 Widget 概述
- 10 UI 组件 自定义组件
- 11 UI 组件 ActiveForm 示例
- 12 UI 组件 ClipWidget 示例
- 13 UI 组件 ContentDecorator 示例
- 14 UI 组件 MaskedTextField 示例
- 15 UI 组件 MultiFileUpload 示例
- 16 UI 组件 StarRating 示例
- 17 UI 组件 TabView 示例
- 18 UI 组件 TextHighlighter 示例
- 19 UI 组件 TreeView 示例
- 20 UI 组件 Captcha 示例
- 21 UI 组件 自定义 Captcha 示例
- 22 UI 组件 Zii 组件简介
- 23 数据库-概述
- 24 数据库-DAO 示例
- 25 数据库-Query Builder 示例
- 26 数据库-Active Record 示例
- 27 数据库-关联 Active Record 示例
- 28 Data Provider 简介
- 29 Zii 组件-Menu 示例
- 30 Zii 组件-ListView 示例
- 31 Zii 组件-DetailView 示例
- 32 Zii 组件-GridView 示例
- 33 Zii 组件-Accordion 示例
- 34 Zii 组件-AutoComplete 示例
- 35 Zii 组件-Button 示例
- 36 Zii 组件-DatePicker 示例
- 37 Zii 组件-Dialog 示例
- 38 Zii 组件-ProgressBar 示例
- 39 Zii 组件-Slider 示例
- 40 Zii 组件-SliderInput 示例
- 41 Zii 组件-Tabs 示例
- 42 Zii 组件-Draggable 示例
- 43 Zii 组件-Droppable 示例
- 44 Zii 组件-Resizable 示例
- 45 Zii 组件-Selectable 示例
- 46 Zii 组件-Sortable 示例
- 47 主题 Theme 示例
- 48 多国语言示例
47 主题 Theme 示例
Theming 是一个在 Web 应用程序里定制网页外观的系统方式。通过採用一个新的主题,可以非常方便的改变应用的外观。
在 Yii,每个主题由一个目录代表,包含 view 文件,layout 文件和相关的资源文件,如图片, CSS 文件, JavaScript 文件等。主题的名字就是他的目录名字。全部主题都放在在同一目录 WebRoot/themes 下 。在任何时候,只有一个主题可以被激活。
提示:默认的主题根目录 WebRoot/themes 可被配置成其他的。只需要配置 themeManager 应用部件的属性 basePath 和 baseUrl
要激活一个主题,设置 Web 应用程序的属性 theme 为你所要的名字。可以在 application configuration 中配置或者在执行过程中在控制器的动作裡面修改。
注:主题名称是区分大小写的。如果您尝试启动一个不存在的主题, yii: :app()->theme 将返回 null 。
主题目录裡面内容的组织方式和 application base path 目录下的组织方式一样。例如,所有的 view 文件必须位于 views 下 ,布局 view 文件在 views/layouts 下 ,和系统 view 文件在 views/system 下。例如,如果我们要替换 PostController 的 create view 文件为 classic 主题下,我们将保存新的 view 文件为 WebRoot/themes/classic/views/post/create.php。
对于在 module 裡面的控制器 view 文件,相应主题 view 文件将被放在 views 目录下。例如,如果上述的 PostController 是在一个命名为 forum 的模块里 ,我们应该保存 create view 文件为 WebRoot/themes/classic/views/forum/post/create.php 。如果 forum 模块嵌套在另一个名为 support 模块里 ,那麽 view 文件应为 WebRoot/themes/classic/views/support/forum/post/create.php 。
本例通过修改 Yii Framework 开发教程(11) UI 组件 ActiveForm 示 ,为它添加两个主提,为简单起见,两个主题名字分别为 cyan,grey, 以其背景颜色命名。
首先在应用目录结构下创建 themes 目录,然后创建 cyan,grey 两个子目录,然后将预设的 protected/views 分别复制到两个子目录下,作为 Theme 的初始版本。
图片 47.1 picture47.1
并使用 Yii 预设的 Css 定义,也分别拷贝到两个主题子目录下,作为 CSS 的初始文件。
下面分别对两个主题下的 CSS 文件稍微做些修改,以示区别,修改 css/main.css 修改 body 的背景色
body { margin: 0; padding: 0; color: #555; font: normal 10pt Arial,Helvetica,sans-serif; background: #00FFFF; }
分别该为 Cyan 和 Grey 的颜色。
然后修改 layout/main.php 引用主题下的 CSS 文件,在一个主题的视图,我们经常需要链接其他主题资源文件。例如,我们可能要显示一个在主题下 images 目录里的图像文件。使用当前激活主题的 baseurl 属性,我们就可以为此图像文件生成如下 url
yii: :app()->theme->baseUrl . '/images/FileName.gif'
修改后的布局文件如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="language" content="en" /> <!-- blueprint CSS framework --> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/screen.css" media="screen, projection" /> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/print.css" media="print" /> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/ie.css" media="screen, projection" /> <![endif]--> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/main.css" /> <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/form.css" /> <title><?php echo Yii::app()->name . ' ' . Yii::app()->theme->name;?></title> </head> <body> <h1>Theme Name:<?php echo Yii::app()->theme->name;?></h1> <?php echo $content; ?> </body> </html>
定义好主题后,就可以通过配置 Application 的 theme 属性来设置当前主题:
return array( 'theme'=>'cyan', ...... );
两个主题显示如下:
图片 47.2 picture47.2
图片 47.3 picture47.3
如果指定的主题不存在,相当于没有主题,将使用预设的显示方式:
图片 47.4 picture47.4
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论