Из вашего файла Bootstrap.php вы можете сделать что-то вроде этого:
protected function _initLayoutName()
{
// use sitelayout.phtml as the main layout file
Zend_Layout::getMvcInstance()->setLayout('sitelayout');
}
Если вы хотите использовать другой макет для другого модуля, вам нужно зарегистрировать плагин в Bootstrap, и плагин должен содержать следующий код:
class Application_Plugin_LayoutSwitcher extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
$module = $request->getModuleName(); // get the name of the current module
if ('admin' == $module) {
// set the layout to admin.phtml if we are in admin module
Zend_Layout::getMvcInstance()->setLayout('admin');
} else if ('somethingelse' == $module) {
Zend_Layout::getMvcInstance()->setLayout('somethingelse');
}
}
}
Внутри вашего application.ini вы можете сделать это, чтобы установить скрипт макета:
resources.layout.layout = "layoutname"
Однако это не будет работать для каждого макета. Если вам нужно изменить макет на основе модуля, вам нужно будет использовать плагин, но вы можете использовать параметр в application.ini, чтобы установить имя макета по умолчанию.