Изменение только макета домашней страницы в cakephp

Если весь мой сайт использует по умолчанию.макет ctp, указанный в apps/view/layouts / default.ctp, как изменить только макет домашней страницы для использования домашней страницы.ОСАГО и оставить остальную часть сайта, используя по умолчанию.ОСАГО?

3 ответов


скопировать /cake/libs/controller/pages_controller.php в своем /app/controller/ реж и выполните одно из следующих действий:

  • добавить строку в конце display() чтобы переключить макет, если запрашивается "home":
    if ($page == 'home') $this->layout = 'homepage';
  • создать home() метод (или названный, как вам нравится), в котором вы устанавливаете $this->layout и передать / маршрут /app/config/routes.php использовать этот новый метод.

Edit:
В общем, вам нужен какой-то пользовательский метод, в котором вы set $this->layout = 'homepage', вот и все. Вы можете сделать это в любом из ваших контроллеров в любой момент, используя PagesController как раз самый удобный и самый обычный путь сделать его в торте.


приведенный выше ответ теперь устарел, но дает правильный подход.

в современных версиях CakePHP контроллер, который он просит вас сделать, уже присутствует и является:

/app/Controller/PagesController.php

у меня был шаблон под названием "loggedoff", и добавил это следующим образом, непосредственно перед тегом $this->render() команда (приблизительно строка 73).

$this->layout = 'loggedoff';

Это прекрасно работает:

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

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

просто установите нужный макет в функции контроллера.