GET Variable via Plugin beeinflussen

Hallo, mal angenommen ich will eine GET Variable beeinflussen in dem Moment, wo eine Produktdetail Seite aufgerufen wird: /detail/index/sArticle/23561 Hätte jetzt gedacht, ich könnte via Enlight_Controller_Action_Frontend_Detail_Index mich dazwischen schalten und was machen. Irgendwie passiert da aber garnichts. Es würde mir auch reichen ganz früh dazwischen zu gehen und je nach aufgerufenem Controller was zu machen. Gruß, Michael

Hallo Michael, um den Detail Controller zu beeinflussen kannst du mit dem preDispatch oder dem Hook System arbeiten. Wenn du z.B. die ArticleID beim Aufruf einer Detailseite manipulieren möchtest, kannst du mit Enlight_Controller_Action_PreDispatch_Frontend_Detail vor dem Standard Dispatch eingreifen: public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Detail', 'EnlightControllerActionPreDispatch' ); return true; } public function EnlightControllerActionPreDispatch(Enlight\_Event\_EventArgs $args) { /\*\* @var Enlight\_Controller\_Action $action \*/ $action = $args-\>getSubject(); $request = $action-\>Request(); $request-\>setParam('sArticle', 179); } Weiterführende Links: » Shopware 4 Controller » Shopware 4 Events & Hooks

Hallo Linus, danke für die Rückmeldung! Hab das jetzt mal testweise gemacht, komischerweise wird das Plugin nicht einmal richtig aktiviert. Es hat den Status aktiviert, jedoch keinen Stift zum Bearbeiten, dafür aber ein grünes Plus zum aktivieren und eine MÜlltonne zum Löschen. Laut Ausgabe wird das Plugin erfolgreich installiert, jedoch ohne das Einträge in s_core_subscribes erfolgen. class Shopware\_Plugins\_Frontend\_SysDataOptimization\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { public function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Detail', 'onPreDispatchOptimizeGetData' ); } function onPreDispatchOptimizeGetData(Enlight\_Event\_EventArgs $args){ print\_r($args); die('HALLO'); } public function getInfo() { return array( 'version' =\> $this-\>getVersion(), 'autor' =\> 'Michael', 'label' =\> $this-\>getLabel(), 'source' =\> "Local", 'copyright' =\> 'Copyright © 2013', 'support' =\> 'support@firma.de', 'link' =\> 'http://www.firma.de/' ); } public function update($oldVersion) { return true; } public function getVersion() { return '1.0.1'; } public function getLabel() { return 'SYS Data-Optimization'; } public function getCapabilities() { return array( 'install' =\> true, 'enable' =\> true, 'update' =\> true ); } }

Hallo Michael, du hast vergessen in der install Methode ein return true; zu übergeben.

Hat sich erledigt: Es hat das return true beim Installieren gefehlt!

Hallo Linus, bin doch schon zu spät an der Stelle! Müsste noch früher dazwischen, d.h. bevor das komplette Grunddesign erstellt wird. Gerne auch einfach den frühesten Moment der in Shopware möglich ist. Leider fehlt mir für diese Einstiege derzeit noch ein wenig das Big Picture. Gruß, Michael

Hat sich wieder aufgelöst: Hab Enlight_Controller_Action_PreDispatch verwendet (aus http://wiki.shopware.de/Shopware-4-Even … 8_866.html) Was ich mich aber frage: Was ist der Unterschied zwischen … $request->setParam(‘sArticle’, 1); … und … Shopware()->System()->_GET[“sArticle”] = 1; ?? Gruß, Michael