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).