Das Wechseln des Design in Abhängigkeit von eurem Modul kann im Zend Framework über ein Plugin realisiert werden. Legt dazu im Ordner application/Plugin/Layout die Datei Changer.php an und füge folgenden Inhalt in die Datei:
class Plugin_Layout_Changer extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
//Prüft ob eine Layoutdatei in Abhängigkeit vom Modulnamen existiert
if(is_file(Zend_Layout::getMvcInstance()->getLayoutPath()
.$request->getModuleName().'.phtml'))
{
//wenn ja, dann diese setzen
Zend_Layout::getMvcInstance()->setLayout($request->getModuleName());
}
else
{
//wenn nicht, dann Standardlayout setzen, hier: bibo
Zend_Layout::getMvcInstance()->setLayout('bibo');
}
}
}
Jetzt müsst ihr noch in eurer Bootstrap-Datei eurer Anwendung das Plugin initialisieren. Fügt dazu einfach folgende Methode eurer Bootstrap-Klasse hinzu:
protected function _initLayoutChanger()
{
$this->bootstrap('frontController');
$this->getResource('frontController')
->registerPlugin(new Plugin_Layout_Changer());
}
Überprüft, ob folgende Einträge in eurer application.ini vorhanden sind:
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
autoloadernamespaces.0 = "Plugin_"
Nun ändert sich automatisch das Layout, in Abhängigkeit von eurem Modulnamen. Achtet darauf, dass die entsprechende Layoutdatei im Ordner application/layouts/scripts/ genauso benannt ist, wie euer Ordnername des Moduls. Bei mir existieren beispielsweise im Ordner application/modules/ die Module „bibo“ und „login“. Demzufolge heißen meine Layoutscripte im Ordner application/layouts/scripts auch „bibo.phtml“ und „login.phtml“. Existiert keine entsprechende Layoutdatei, wird das in der Changer.php im else Zweig angegebene Layout geladen (in meinem Fall das Layoutscript bibo.phtml).