Temas no Yii

Bom dia a todos, estou aqui customizando o Yii, para as minhas necessidades…

hehehehe :rolleyes:

Mas estou com muitas dificuldades em fazer funcionar o tema que crei.

Configurei ele no config/mais.php :

  • ‘theme’=>‘nome_do_tema’

mas no controller que estou chamando a página para ser renderizada, não funciona o tema

Como posso fazer ele funcionar?

Houve alguma configuração que esqueci?

utilize ‘layout’ ao invés de ‘theme’.

Depois de muita luta aqui consegui usar o tema.

Vou tentar também com o ‘layout’.

Obrigado!

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&amp;tema=modern">Modern</a>

<?php elseif (Yii::app()->theme->getName() == 'modern'): ?>

   <a class="" href="index.php?r=site/changeTheme&amp;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!

O layout não muda o tema, muda apenas o… layout!

Um tema pode conter vários layouts.

Fala ai o que você fez para resolver, de repente sua solução pode ser útil para mais alguém =D

Cara minha falha foi de não montar a mesma arquitetura que o tema tem que usar

  • assets

  • css

  • images

  • protected

  • themes

---- classic

---- novoTema

--------- views a serem criadas.

Muito obrigado a todos.