Jan Mendes, estou fazendo da seguinte maneira pra mudar o tema do sistema:
Meu "SiteController" extende "BaseController" que extende "CController". Então em "BaseController" foi adicionado as seguintes funções:
<?php
class BaseController extends CController
{
/**
* Utilizado para definir o tema baseado na escolha do usuário
* @param <type> $id
* @param <type> $module
*/
public function __construct($id,$module=null) {
parent::__construct($id,$module);
# Definicao do tema
$session = Yii::app()->session;
if (isset($session['tema'])) Yii::app()->setTheme($session['tema']);
}
/**
* Muda o tema do sistema
*/
public function actionChangeTheme() {
if ($_GET['tema'] != "") {
$_SESSION['tema'] = $_GET['tema'];
$this->redirect(Yii::app()->getRequest()->urlReferrer);
}
}
}
Em nosso layout principal "view/layouts/main.php" foi adicionado:
Os links para os estilos dentro da tag <header></header>
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/form.css" />
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/main.css" />
e os links que ativam os temas "classic e modern"
Tema:
<?php if (Yii::app()->theme->getName() == 'classic'): ?>
<a class="" href="index.php?r=site/changeTheme&tema=modern">Modern</a>
<?php elseif (Yii::app()->theme->getName() == 'modern'): ?>
<a class="" href="index.php?r=site/changeTheme&tema=classic">Classic</a>
<?php endif; ?>
Já na estrutura de pastas eu tenho "assets", "protected", "themes" bla bla

Sacou?
Isto quer dizer que meus temas estão fora de "protected" e dentro de "themes" eu tenho as pastas "classic" e "modern" e que ambas contém as pastas "css e images".
Veja o exemplo:
themes
|-classic
|-css
|-form.css
|-main.css
|-images
|-modern
|-css
|-form.css
|-main.css
|-images
Espero que isto ajude a galera. Abs!