包 | system.web |
---|---|
继承 | class CThemeManager » CApplicationComponent » CComponent |
实现 | IApplicationComponent |
源自 | 1.0 |
版本 | $Id: CThemeManager.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CThemeManager管理web应用程序的主题。
一个主题是一个view/layout文件和资源文件 (例如css,image,js文件)的集合。当一个主题是激活的时,CController 将首先在主题文件夹下查找指定的view/layout。 如果此主题提供了它们,相应的view/layout文件将被使用。 否则,默认的view/layout文件将被使用。
默认情况下,每一个主题被组织为一个目录,目录名就是主题名。 所有的主题存放在“WebRootPath/themes”目录下。
要激活一个主题,设置theme属性 为主题的名字。
一个独立的主题经常包含可经web访问的资源文件, 请确保view/layout文件被保护不被web用户访问。
一个主题是一个view/layout文件和资源文件 (例如css,image,js文件)的集合。当一个主题是激活的时,CController 将首先在主题文件夹下查找指定的view/layout。 如果此主题提供了它们,相应的view/layout文件将被使用。 否则,默认的view/layout文件将被使用。
默认情况下,每一个主题被组织为一个目录,目录名就是主题名。 所有的主题存放在“WebRootPath/themes”目录下。
要激活一个主题,设置theme属性 为主题的名字。
一个独立的主题经常包含可经web访问的资源文件, 请确保view/layout文件被保护不被web用户访问。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
basePath | string | 所有主题的基本路径。默认是“WebRootPath/themes”。 | CThemeManager |
baseUrl | string | 所有主题的基本URL。默认是“/WebRoot/themes”。 | CThemeManager |
behaviors | array | 这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。 | CApplicationComponent |
isInitialized | boolean | 检查应用组件是否已经初始化。 | CApplicationComponent |
themeClass | string | 表示一个主题的主题类名称。 默认是CTheme。这也可以是一个带点语法的类名。 | CThemeManager |
themeNames | array | 可用主题名列表 | CThemeManager |
公共方法
属性详细
basePath
属性
所有主题的基本路径。默认是“WebRootPath/themes”。
baseUrl
属性
所有主题的基本URL。默认是“/WebRoot/themes”。
themeClass
属性
public string $themeClass;
表示一个主题的主题类名称。 默认是CTheme。这也可以是一个带点语法的类名。
themeNames
属性
只读
public array getThemeNames()
可用主题名列表
方法详细
getBasePath()
方法
public string getBasePath()
| ||
{return} | string | 所有主题的基本路径。默认是“WebRootPath/themes”。 |
public function getBasePath()
{
if($this->_basePath===null)
$this->setBasePath(dirname(Yii::app()->getRequest()->getScriptFile()).DIRECTORY_SEPARATOR.self::DEFAULT_BASEPATH);
return $this->_basePath;
}
getBaseUrl()
方法
public string getBaseUrl()
| ||
{return} | string | 所有主题的基本URL。默认是“/WebRoot/themes”。 |
public function getBaseUrl()
{
if($this->_baseUrl===null)
$this->_baseUrl=Yii::app()->getBaseUrl().'/'.self::DEFAULT_BASEPATH;
return $this->_baseUrl;
}
getTheme()
方法
public CTheme getTheme(string $name)
| ||
$name | string | 要取回的主题的名称 |
{return} | CTheme | 已取回的主题。如果主题不存在为Null。 |
public function getTheme($name)
{
$themePath=$this->getBasePath().DIRECTORY_SEPARATOR.$name;
if(is_dir($themePath))
{
$class=Yii::import($this->themeClass, true);
return new $class($name,$themePath,$this->getBaseUrl().'/'.$name);
}
else
return null;
}
getThemeNames()
方法
public array getThemeNames()
| ||
{return} | array | 可用主题名列表 |
public function getThemeNames()
{
static $themes;
if($themes===null)
{
$themes=array();
$basePath=$this->getBasePath();
$folder=@opendir($basePath);
while(($file=@readdir($folder))!==false)
{
if($file!=='.' && $file!=='..' && $file!=='.svn' && is_dir($basePath.DIRECTORY_SEPARATOR.$file))
$themes[]=$file;
}
closedir($folder);
sort($themes);
}
return $themes;
}
setBasePath()
方法
public void setBasePath(string $value)
| ||
$value | string | 所有主题基本路径。 |
public function setBasePath($value)
{
$this->_basePath=realpath($value);
if($this->_basePath===false || !is_dir($this->_basePath))
throw new CException(Yii::t('yii','Theme directory "{directory}" does not exist.',array('{directory}'=>$value)));
}
setBaseUrl()
方法
public void setBaseUrl(string $value)
| ||
$value | string | 所有主题的基本URL。 |
public function setBaseUrl($value)
{
$this->_baseUrl=rtrim($value,'/');
}