Es wurde ein eigener Controller erstellt. Der soll nun aber nicht über www.domain.de/controller anzusprechen sein, sondern die Startseite zur Verfügung stellen. Er soll also den indexController überschreiben und den Inhalt von www.domain.de ausliefern. Ich steh gerade auf dem Schlauch, aber das müsste doch gehen…
Alternativ habe ich versucht per Mod_rewrite alles was an domain.de geht auf domain.de/controller umzuschreiben (keine Weiterleitung!). Jedoch greift meine rule nicht, es wird weiterhin die Startseite angezeigt. Jemand eine Idee? RewriteRule ^$ /controller/ RewriteCond %{REQUEST\_URI} !(\/(engine|files|templates)\/) RewriteCond %{REQUEST\_URI} !(\/media\/(archive|banner|image|music|extjs|pdf|unknown|video)\/) RewriteCond %{REQUEST\_FILENAME} !-f RewriteCond %{REQUEST\_FILENAME} !-d RewriteRule ^(.\*)$ shopware.php [PT,L,QSA]
Über eine Einkaufswelt könnte man vielleicht auch eigene Logik auf die Startseite bekommen? Das ist aber leider nicht wirklich dokumentiert. Wie kann man denn sonst eigene Logik für die Startseite umsetzen?
ungetestet: klink dich doch ins event Enlight_Controller_Action_PreDispatch_Frontend_Index oder Enlight_Controller_Action_Frontend_Index_Index ein, und mach dort einen $this->redirect (array (‚controller‘ => ‚meinController‘));
Danke für den Tipp. Ein redirect leitet aber so weiter, dass sich die URL ändert. Das will ich aber gerade nicht. Das brachte mich dann aber dazu es mit einem forward zu versuchen. Der läuft aber ins Leere. Der Browser rödelt sich tot, am Ende gibts einen 500er-Fehler, firebug sagt dazu nichts. Ich vermute eine Endlosschleife oder dass ich forward falsch einsetze? Ein forward auf einen Standard-Controller (z.B. register) zeigt nämlich das gleiche Verhalten. $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Index', 'onIndex' );
public function onIndex(Enlight\_Event\_EventArgs $args) { return $args-\>getSubject()-\>forward('meinController'); }
ebenfalls ungetestet: das event müsste Enlight_Controller_Action_Frontend_Index_Index sein. dann public function onIndex(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>forward('meinController'); // forward() selbst macht kein return // also wird null geliefert // desshalb wird in engine/Library/Enlight/Controller/Action.php::dispatch() // trotzdem $this-\>$action() ausgeführt. das kann zu einer endlosschleife führen... // also: return true; }
funktioniert aber auch nicht, das preDispatch() von Shopware_Controllers_Frontend_Index spuckt einem kräftig in die suppe. so gehts (getestet) ohne eigenen controller - umleitung auf warenkorb: $this-\>subscribeEvent( // k.a. ob der noch benötigt wird... // aber spart ein bissl performance weil die indexAction nicht mehr ausgeführt wird ... 'Enlight\_Controller\_Action\_Frontend\_Index\_Index', 'onIndex' ); $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Index::preDispatch::replace', 'onpreDispatch' ); public function onpreDispatch(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>forward('cart', 'checkout'); } public function onIndex(Enlight\_Event\_EventArgs $args) { return true; }