开发者

Changing only the home page layout in cakephp

开发者 https://www.devze.com 2022-12-14 17:32 出处:网络
If my whole site is using the default.ctp layout specified in apps/view/layouts/default.ctp, how d开发者_运维技巧o I change only the home page layout to use homepage.ctp and leave the rest of the site

If my whole site is using the default.ctp layout specified in apps/view/layouts/default.ctp, how d开发者_运维技巧o I change only the home page layout to use homepage.ctp and leave the rest of the site using default.ctp?


Copy the /cake/libs/controller/pages_controller.php into your /app/controller/ dir and do either of the following:

  • Add a line towards the end of display() to switch the layout if 'home' is requested:
    if ($page == 'home') $this->layout = 'homepage';
  • Create a home() method (or named however you like) in which you set $this->layout and re-route the / route in /app/config/routes.php to use this new method.

Edit:
In summary, you need some custom method in which you'll set $this->layout = 'homepage', that's all. You can do this in any of your controllers at any point, reusing the PagesController is just the most convenient and conventional way to do it in Cake.


The above answer is now out of date, but gives the right approach.

In modern versions of CakePHP, the controller he asks you to make is already present and is:

/app/Controller/PagesController.php

I had a template called "loggedoff", and added this as follows, just before the $this->render() command (approx line 73).

$this->layout = 'loggedoff';


This works fine:

class RegistrationsController extends AppController {
     public $helpers = array('Html', 'Form', 'Time');
     public $components = array('Session');

     public function login() {
         $this->layout = 'empty';
     } 
}

Just set the desired layout in the controller function.

0

精彩评论

暂无评论...
验证码 换一张
取 消