Page Contents

Temas

Temas no CakePHP são simplesmente plugins que focam em prover arquivos de template. Veja a seção em Criando seus próprios complementos. Você pode tirar vantagem de temas, deixando fácil a troca da aparência da dua página rapidamente. Além de arquivos de templates, eles também podem provers helpers e “cells” se o seu tema assim requerer. Quando usado cells e helpes no seu tema, você precisará continuar usando a sintaxe plugin.

Para usar temas, defina o tema na action do seu controller ou no método beforeRender():

class ExamplesController extends AppController
{
    // Para o CakePHP antes da versão 3.1
    public $theme = 'Modern';

    public function beforeRender(\Cake\Event\Event $event)
    {
        $this->viewBuilder()->setTheme('Modern');

        // Para o cakePHP antes da versão 3.5
        $this->viewBuilder()->theme('Modern');
    }
}

Os arquivos de tempalte do tema precisam estar dentro de um plugin com o mesmo nome. Por exemplo, o tema acima seria encontrado em plugins/Modern/src/Template. É importante lembrar que o CakePHP espera o nome do plugin/tema em PascalCase. Além de que, a estrutura da pasta dentro da pasta plugins/Modern/src/Template é exatamente o mesmo que templates/.

Por exemplo, o arquivo de exibição para uma action de edição de um controller de posts residiria em plugins/Modern/templates/Posts/edit.php. Os arquivos de layout residiriam em plugins/Modern/templates/layout/. Você pode fornecer modelos personalizados para plugins com um tema também. Se você tiver um plugin chamado “Cms”, que contenha um TagsController, o tema moderno poderia fornecer plugins/Modern/templates/plugin/Cms/Tags/edit.php para substituir o template da edição no plugin.

Se um arquivo de exibição não puder ser encontrado no tema, o CakePHP tentará localizar a visualização arquivo na pasta templates/. Desta forma, você pode criar arquivos de template mestre e simplesmente substituí-los caso a caso na pasta do seu tema.

Assets do Tema

Como os temas são plugins CakePHP padrão, eles podem incluir qualquer asset necessário em seu diretório webroot. Isso permite uma fácil embalagem e distribuição de temas. Enquanto estiver em desenvolvimento, requisições de assets do tema serão manipuladas por: php:class:Cake\Routing\Dispatcher. Para melhorar o desempenho para ambientes de produção, é recomendável que você Aprimorar a performance de sua aplicação.

Todos os ajudantes internos do CakePHP estão cientes de temas e criará o Corrija os caminhos automaticamente. Como arquivos de template, se um arquivo não estiver na pasta do tema, será padrão para a pasta webroot principal:

// Em um tema com o nome 'purple_cupcake'
$this->Html->css('main.css');

// crie os diretórios como
/purple_cupcake/css/main.css

// e crie o link como
plugins/PurpleCupcake/webroot/css/main.css