Si tout mon site utilise la mise en page par défaut.CTP spécifiée dans les applications / affichage / mise en page / default.ctp, comment ne modifiez que la disposition de la page d'accueil pour utiliser homepage.ct et laissez le reste du site à l'aide de Par défaut. CTP? P>
3 Réponses :
Copier le edit: strong> /cake/libs/controller/pages_controller.php code> dans votre
/ APP / Controller / CODE> DIR et effectuez l'une des opérations suivantes: p>
Affichage () Code> Pour changer la mise en page si 'home' est demandée:
si ($ page == 'home') $ this-> mise en page = 'Page d'accueil'; Code> Li>
Accueil () code> (ou nommé comme vous le souhaitez) dans lequel vous définissez
$ ceci-> layout code> et rétablir le
/ Code> Route in
/app/config/routes.php code> Pour utiliser cette nouvelle méthode. Li>
ul>
En résumé, vous avez besoin d'une méthode personnalisée dans laquelle vous définirez $ ceci-> layout = 'page d'accueil' code>, c'est tout. Vous pouvez le faire dans l'un de vos contrôleurs à tout moment, réutiliser le
pagesController code> est juste le moyen le plus pratique et conventionnel de le faire dans des gâteaux. P>
Ne écrasez pas la classe un peu plus intelligemment. Je suppose aussi que $ ceci-> layout code> peut être appelé à partir d'une autre fonction, quelque chose
init code> -ike.
En fait, vous n'avez même pas besoin de l'original code> pagesController code> - Vous pouvez utiliser des itinéraires pour pointer vers un contrôleur personnalisé et définir $ ceci-> layout code> à partir de là
@Franz qu'entendez-vous par "écrasement"?
@K Assurez-vous que vous pouvez, mais c'est une bonne idée de ne garder que les pagesController pour les pages statiques conformément à la convention.
Cool, je viens de recevoir ceci pour travailler en utilisant le premier point. Bien que j'ai aussi remarqué que le CMS personnalisé qu'un autre gars au travail écrit annule ce réglage. Donc, fondamentalement, je devais simplement spécifier un modèle pour la page d'accueil via le CMS. Lorsque je n'utilise pas le CMS, je serai sûr de l'utiliser. Merci pour l'aide les gars.
Pour les nouveaux à CakePHP, veuillez noter que si vous utilisez la première solution de DÉCEZE, le $ ceci-> layout = 'Page d'accueil'; la ligne devrait aller avant le chiffrement de $ (Joindre (rejoindre ('/', $ chemin)); Ligne (la dernière ligne de la fonction d'affichage) car la mise en page ne sera pas mise à jour de la valeur par défaut.
La réponse ci-dessus est maintenant obsolète, mais donne la bonne approche.
Dans les versions modernes de CakePHP, le contrôleur qu'il vous demande de faire est déjà présent et est la suivante: p> J'ai eu un modèle appelé "LoggedoFtOf" et ajouté ceci comme suit, juste avant le $ ceci-> rendu () code> commande (ligne approximative 73). p>
Cela fonctionne bien: Il suffit de définir la mise en page souhaitée dans la fonction de contrôleur. p> p>