Vous pouvez profiter des thèmes, ce qui facilite le changement du visuel et du ressenti de votre page rapidement et facilement.
Pour utiliser les thèmes, spécifiez le nom du thème dans votre controller:
class ExempleController extends AppController {
public $theme = 'Exemple';
}
Modifié dans la version 2.1: Les versions antérieures à 2.1 ont besoin de définir
$this->viewClass = 'Theme'
.
2.1 enlève cette condition puisque la classe normale View
supporte les thèmes.
Vous pouvez également définir ou modifier le nom du thème dans une action ou
dans les fonctions de callback beforeFilter
ou beforeRender
:
$this->theme = 'AutreExemple';
Les fichiers de vue du thème ont besoin d’être dans le dossier
/app/View/Themed/
. Dans le dossier du thème, créez un dossier utilisant
le même nom que le nom de votre thème. Par exemple, Le thème ci-dessus serait
trouvé dans /app/View/Themed/AutreExemple
. Il est important de se souvenir
que CakePHP attend des noms de thème en CamelCase. Au-delà de ça, la structure
de dossier dans le dossier /app/View/Themed/Exemple/
est exactement le même
que /app/View/
.
Par exemple, le fichier de vue pour une action edit d’un controller Posts
se trouvera dans /app/View/Themed/Exemple/Posts/edit.ctp
. Les fichiers de
Layout se trouveront dans /app/View/Themed/Exemple/Layouts/
.
Si un fichier de vue ne peut pas être trouvé dans le thème, CakePHP va
essayer de localiser le fichier de vue dans le dossier /app/View/
.
De cette façon, vous pouvez créer des fichiers de vue master et simplement
les remplacer au cas par cas au sein de votre dossier de thème.
Les thèmes peuvent contenir des assets statiques ainsi que des fichiers de vue.
Un thème peut inclure tout asset nécessaire dans son répertoire webroot. Cela
permet un packaging facile et une distribution des thèmes. Pendant le
développement, les requêtes pour les assets du thème seront gérés par
Dispatcher
. Pour améliorer la performance des environnements de
production, il est recommandé, soit que vous fassiez un lien symbolique, soit
que vous copiez les assets du thème dans le webroot de application. Voir
ci-dessous pour plus d’informations.
Pour utiliser le nouveau webroot du thème, créez des répertoires comme:
``app/View/Themed/<nomDuTheme>/webroot<chemin_vers_fichier>``
dans votre thème. Le Dispatcher se chargera de trouver les assets du thème corrects dans vos chemins de vue.
Tous les helpers integrés dans CakePHP ont intégrés l’existence des thèmes et vont créer des chemins d’accès corrects automatiquement. Comme pour les fichiers de vue, si un fichier n’est pas dans le dossier du thème, il sera par défaut dans le dossier principal webroot
//Quand dans un thème avec un nom de 'purple_cupcake'
$this->Html->css('main.css');
//crée un chemin comme
/theme/purple_cupcake/css/main.css
//et fait un lien vers
app/View/Themed/PurpleCupcake/webroot/css/main.css
C’est un fait bien connu que de servir les assets par le biais de PHP est
assuré d’être plus lent que de servir ces assets sans invoquer PHP. Et
tandis que l’équipe du coeur a pris des mesures pour rendre le plugin et
l’asset du thème servis aussi vite que possible, il peut y avoir des
situations où plus de performance est requis. Dans ces situations, il
est recommandé soit que vous fassiez un lien symbolique soit que vous
fassiez une copie sur les assets du plug-in/thème vers des répertoires
dans app/webroot
avec des chemins correspondant à ceux utilisés par
cakephp.
app/Plugin/DebugKit/webroot/js/my_file.js
devient
app/webroot/DebugKit/js/my_file.js
.
app/View/Themed/Navy/webroot/css/navy.css
devient
app/webroot/theme/Navy/css/navy.css
.