Изменение только макета домашней страницы в 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';
}
}
просто установите нужный макет в функции контроллера.