Versions
Look up a class, method, property or event

CTheme

Package system.web
Inheritance class CTheme » CComponent
Since 1.0
Source Code framework/web/CTheme.php
CTheme represents an application theme.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
basePath string the file path to the theme folder CTheme
baseUrl string the relative URL to the theme folder (without ending slash) CTheme
name string theme name CTheme
skinPath string the path for widget skins. CTheme
systemViewPath string the path for system views. CTheme
viewPath string the path for controller views. CTheme

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. CComponent
__construct() Constructor. CTheme
__get() Returns a property value, an event handler list or a behavior based on its name. CComponent
__isset() Checks if a property value is null. CComponent
__set() Sets value of a component property. CComponent
__unset() Sets a component property to be null. CComponent
asa() Returns the named behavior object. CComponent
attachBehavior() Attaches a behavior to this component. CComponent
attachBehaviors() Attaches a list of behaviors to the component. CComponent
attachEventHandler() Attaches an event handler to an event. CComponent
canGetProperty() Determines whether a property can be read. CComponent
canSetProperty() Determines whether a property can be set. CComponent
detachBehavior() Detaches a behavior from the component. CComponent
detachBehaviors() Detaches all behaviors from the component. CComponent
detachEventHandler() Detaches an existing event handler. CComponent
disableBehavior() Disables an attached behavior. CComponent
disableBehaviors() Disables all behaviors attached to this component. CComponent
enableBehavior() Enables an attached behavior. CComponent
enableBehaviors() Enables all behaviors attached to this component. CComponent
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
getBasePath() Returns the file path to the theme folder CTheme
getBaseUrl() Returns the relative URL to the theme folder (without ending slash) CTheme
getEventHandlers() Returns the list of attached event handlers for an event. CComponent
getLayoutFile() Finds the layout file for the specified controller's layout. CTheme
getName() Returns theme name CTheme
getSkinPath() Returns the path for widget skins. Defaults to 'ThemeRoot/views/skins'. CTheme
getSystemViewPath() Returns the path for system views. Defaults to 'ThemeRoot/views/system'. CTheme
getViewFile() Finds the view file for the specified controller's view. CTheme
getViewPath() Returns the path for controller views. Defaults to 'ThemeRoot/views'. CTheme
hasEvent() Determines whether an event is defined. CComponent
hasEventHandler() Checks whether the named event has attached handlers. CComponent
hasProperty() Determines whether a property is defined. CComponent
raiseEvent() Raises an event. CComponent

Property Details

basePath property read-only
public string getBasePath()

the file path to the theme folder

baseUrl property read-only
public string getBaseUrl()

the relative URL to the theme folder (without ending slash)

name property read-only
public string getName()

theme name

skinPath property read-only (available since v1.1)
public string getSkinPath()

the path for widget skins. Defaults to 'ThemeRoot/views/skins'.

systemViewPath property read-only
public string getSystemViewPath()

the path for system views. Defaults to 'ThemeRoot/views/system'.

viewPath property read-only
public string getViewPath()

the path for controller views. Defaults to 'ThemeRoot/views'.

Method Details

__construct() method
public void __construct(string $name, string $basePath, string $baseUrl)
$name string name of the theme
$basePath string base theme path
$baseUrl string base theme URL
Source Code: framework/web/CTheme.php#37 (show)
public function __construct($name,$basePath,$baseUrl)
{
    
$this->_name=$name;
    
$this->_baseUrl=$baseUrl;
    
$this->_basePath=$basePath;
}

Constructor.

getBasePath() method
public string getBasePath()
{return} string the file path to the theme folder
Source Code: framework/web/CTheme.php#63 (show)
public function getBasePath()
{
    return 
$this->_basePath;
}

getBaseUrl() method
public string getBaseUrl()
{return} string the relative URL to the theme folder (without ending slash)
Source Code: framework/web/CTheme.php#55 (show)
public function getBaseUrl()
{
    return 
$this->_baseUrl;
}

getLayoutFile() method
public string getLayoutFile(CController $controller, string $layoutName)
$controller CController the controller
$layoutName string the layout name
{return} string the layout file path. False if the file does not exist.
Source Code: framework/web/CTheme.php#113 (show)
public function getLayoutFile($controller,$layoutName)
{
    
$moduleViewPath=$basePath=$this->getViewPath();
    
$module=$controller->getModule();
    if(empty(
$layoutName))
    {
        while(
$module!==null)
        {
            if(
$module->layout===false)
                return 
false;
            if(!empty(
$module->layout))
                break;
            
$module=$module->getParentModule();
        }
        if(
$module===null)
            
$layoutName=Yii::app()->layout;
        else
        {
            
$layoutName=$module->layout;
            
$moduleViewPath.='/'.$module->getId();
        }
    }
    elseif(
$module!==null)
        
$moduleViewPath.='/'.$module->getId();

    return 
$controller->resolveViewFile($layoutName,$moduleViewPath.'/layouts',$basePath,$moduleViewPath);
}

Finds the layout file for the specified controller's layout.

getName() method
public string getName()
{return} string theme name
Source Code: framework/web/CTheme.php#47 (show)
public function getName()
{
    return 
$this->_name;
}

getSkinPath() method (available since v1.1)
public string getSkinPath()
{return} string the path for widget skins. Defaults to 'ThemeRoot/views/skins'.
Source Code: framework/web/CTheme.php#88 (show)
public function getSkinPath()
{
    return 
$this->getViewPath().DIRECTORY_SEPARATOR.'skins';
}

getSystemViewPath() method
public string getSystemViewPath()
{return} string the path for system views. Defaults to 'ThemeRoot/views/system'.
Source Code: framework/web/CTheme.php#79 (show)
public function getSystemViewPath()
{
    return 
$this->getViewPath().DIRECTORY_SEPARATOR.'system';
}

getViewFile() method
public string getViewFile(CController $controller, string $viewName)
$controller CController the controller
$viewName string the view name
{return} string the view file path. False if the file does not exist.
Source Code: framework/web/CTheme.php#99 (show)
public function getViewFile($controller,$viewName)
{
    
$moduleViewPath=$this->getViewPath();
    if((
$module=$controller->getModule())!==null)
        
$moduleViewPath.='/'.$module->getId();
    return 
$controller->resolveViewFile($viewName,$this->getViewPath().'/'.$controller->getUniqueId(),$this->getViewPath(),$moduleViewPath);
}

Finds the view file for the specified controller's view.

getViewPath() method
public string getViewPath()
{return} string the path for controller views. Defaults to 'ThemeRoot/views'.
Source Code: framework/web/CTheme.php#71 (show)
public function getViewPath()
{
    return 
$this->_basePath.DIRECTORY_SEPARATOR.'views';
}

Total 1 comment

#14643 report it
adsmail27 at 2013/08/31 01:31pm
Example

Directory structure

- css
- js
- images
- protected
- themes
  - mydefaulttheme
    - css
    - js
    - images
    - views
      - layouts
        - base_layout.php
        - two_column.php
        - three_column.php

File: protected/config/main.php

return array(
    'theme' => 'mydefaulttheme',
    ...
);

File: protected/componentes/Controller.php

class Controller extends CController {
    public $layout='//layouts/two_column';
...
}

base_layout.php

<html>
<head>
    ...
    <?php Yii::app()->clientScript->registerCssFile(Yii::app()->theme->baseUrl . '/css/style.css'); ?>
    <?php Yii::app()->clientScript->registerCssFile(Yii::app()->request->baseUrl . '/css/common.css'); ?>
    ...
</head>
<body>
   ...
        <?php echo $content; ?>
   ...
</body>
</html>

two_column.php

<?php $this->beginContent('//layouts/base_layout'); ?>
<div class="left_column">
    ...
</div>
<div class="right_column">
    <?php echo $content?>
</div>
<?php $this->endContent(); ?>

Leave a comment

Please to leave your comment.