8
votes

Changer que la mise en page de la page d'accueil dans CakePHP

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?


0 commentaires

3 Réponses :


14
votes

Copier le /cake/libs/controller/pages_controller.php dans votre / APP / Controller / DIR et effectuez l'une des opérations suivantes:

  • Ajoutez une ligne vers la fin de Affichage () Pour changer la mise en page si 'home' est demandée:
    si ($ page == 'home') $ this-> mise en page = 'Page d'accueil';
  • Créez un Accueil () (ou nommé comme vous le souhaitez) dans lequel vous définissez $ ceci-> layout et rétablir le / Route in /app/config/routes.php Pour utiliser cette nouvelle méthode.

    edit:
    En résumé, vous avez besoin d'une méthode personnalisée dans laquelle vous définirez $ ceci-> layout = 'page d'accueil' , c'est tout. Vous pouvez le faire dans l'un de vos contrôleurs à tout moment, réutiliser le pagesController est juste le moyen le plus pratique et conventionnel de le faire dans des gâteaux.


6 commentaires

Ne écrasez pas la classe un peu plus intelligemment. Je suppose aussi que $ ceci-> layout peut être appelé à partir d'une autre fonction, quelque chose init -ike.


En fait, vous n'avez même pas besoin de l'original pagesController - Vous pouvez utiliser des itinéraires pour pointer vers un contrôleur personnalisé et définir $ ceci-> layout à 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.



1
votes

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: xxx

J'ai eu un modèle appelé "LoggedoFtOf" et ajouté ceci comme suit, juste avant le $ ceci-> rendu () commande (ligne approximative 73). xxx


0 commentaires

0
votes

Cela fonctionne bien: xxx

Il suffit de définir la mise en page souhaitée dans la fonction de contrôleur.


0 commentaires