I'm attending CakeFest 2010!

3.10.5 Temas (Themes)

The original text for this section has changed since it was translated. Please help resolve this difference. You can:

More information about translations

Você pode aproveitar os temas, tornando mais fácil trocar o visual e sentido de sua página rapidamente.

Para usar temas, você precisa dizer ao seu controller para usar a classe ThemeView em vez da classe View padrão.

class ExampleController extends AppController {
    var $view = 'Theme';
}
  1. class ExampleController extends AppController {
  2. var $view = 'Theme';
  3. }

Para declarar qual tema usar como padrão, especifique o nome do tema em seu controller.

class ExampleController extends AppController {
    var $view = 'Theme';
    var $theme = 'example';
}
  1. class ExampleController extends AppController {
  2. var $view = 'Theme';
  3. var $theme = 'example';
  4. }

Você também pode definir ou mudar o nome do tema dentro de uma action ou dentro de funções de callback beforeFilter ou beforeRender.

$this->theme = 'another_example';
  1. $this->theme = 'another_example';

Arquivos temas de view precisam estar dentro da pasta /app/views/themed. Dentro da pasta themed, crie uma pasta usando o mesmo nome de seu tema. Além disso, a estrutura da pasta dentro da pasta /app/views/themed/exemaple/ é exatamente a mesma de /app/views/.

Por exemplo, o arquivo de view para uma action edit de um controller Posts deve ficar em /app/views/themed/exemple/posts/edit.ctp. Arquivos de layout devem ficar em /app/views/themed/example/layouts/.

Se um arquivo de view não pode ser encontrado em um tema, o CakePHP tentará encontrar o arquivo de view em /app/views/. Desta forma, você pode criar arquivos views mestres e simplismente sobrescrevê-los baseando-se caso-por-caso dentro de sua pasta tema.

Se você tem arquivos CSS ou JavaScript que são específicos de seu tema, você pode armazená-los em uma pasta theme dentro de webroot. Por exemplo, suas folhas de estilos devem ser armazenadas em /app/webroot/themed/example/css/ e seus arquivos JavaScript devem ser armazenados em /app/webroot/themed/example/js/.

Todos os helpers do CakePHP embutidos são informados de temas e criarão os caminhos certos automaticamente. Como arquivos view, se um arquivo não estiver na pasta tema, será padrão a pasta webroot principal.