Изменение только макета домашней страницы в cakephp - PullRequest
8 голосов
/ 21 декабря 2009

Если весь мой сайт использует макет default.ctp, указанный в apps / view / layouts / default.ctp, как мне изменить только макет домашней страницы, чтобы использовать homepage.ctp, и оставить остальной сайт, используя default. CTP

Ответы [ 3 ]

14 голосов
/ 21 декабря 2009

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

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

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

1 голос
/ 02 мая 2013

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

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

/app/Controller/PagesController.php

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

$this->layout = 'loggedoff';
0 голосов
/ 30 июля 2013

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

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

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

Просто установите желаемую раскладку в функции контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...