Hallo, ich bastel gerade an einem Plugin für einen Shop mit Subshop (andere Domain). Die Kategorien der zwei Shops möchten wir mit unserem Plugin untereinander verbinden bzw. in Beziehung setzen. Jetzt stehe ich gerade vor der Fragestellung, wie sage ich meinem Plugin, wenn ich durch das Frontend navigiere, in welchem Subshop ich mich gerade befinde? Es gibt ja die Variable $sCategoryStart im Template aber wie kriege ich diese Info in das Plugin. Die aktuelle Kategorie kann ich ja z.B. mit … $view->sCategoryInfo['id‘] … ermitteln, aber wie kriege ich den aktuellen Subshop? Hat jemand einen Tipp für mich? Gruß aus Hannover Michael
Shopware()->Shop() gibt dir den aktuellen Subshop zurück. Mit Shopware()->Shop()->getMain() kommst du an den Hauptshop. Viele Grüße
Hallo Aquatuning, danke für Deine prompte Antwort. Ich glaube ich mache da gerade grundsätzlich etwas falsch $kat = Shopware()-\>Shop()-\>getMain(); $kat2 = Shopware()-\>Shop();
Wenn ich das in mein Plugin einbaue bekomme ich eine ‚schöne‘ Fehlermeldung: Fatal error: Uncaught exception ‚Enlight_Exception‘ with message ‚Resource „Shop“ not found failure‘ in domain.de/engine/Library/Enlight/Bootstrap.php:261 Stack trace: #0 domain.de/engine/Shopware/Application.php(139): Enlight_Bootstrap->getResource(‚Shop‘) #1 domain.de/engine/Shopware/Plugins/Local/Frontend/SabSwitchshops/Bootstrap.php(73): Shopware->Shop() #2 domain.de/engine/Library/Enlight/Event/Handler/Plugin.php(149): Shopware_Plugins_Frontend_SabSwitchshops_Bootstrap->onPostDispatch(Object(Enlight_Event_EventArgs)) #3 domain.de/engine/Library/Enlight/Event/EventManager.php(165): Enlight_Event_Handler_Plugin->execute(Object(Enlight_Event_EventArgs)) #4 domain.de/engine/Library/Enlight/Controller/Action.php(191): Enlight_Event_EventManager->notify(‚Enlight_Control…‘, Array) #5 domain.de/engine/Library/Enlight/Controller/Dispatcher/Default.php(521): Enlight_Controller_Action->dispatch(‚errorAction‘) #6 /stogsdvf/www.sto in domain.de/engine/Library/Enlight/Bootstrap.php on line 261 Das ist der Code … ich denke ich mache da einen grundsätzlichen Fehler. class Shopware\_Plugins\_Frontend\_Meinplugin\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { ... function install() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onPostDispatch' ); return true; } ... public function onPostDispatch(Enlight\_Event\_EventArgs $args) { $controller = $args-\>getSubject(); $view = $controller-\>View(); $request = $controller-\>Request(); $kat = Shopware()-\>Shop()-\>getMain(); $kat2 = Shopware()-\>Shop(); $kat\_current = $view-\>sCategoryInfo['id']; if ($request-\>getModuleName() !== 'frontend' || !$view-\>hasTemplate()) { return $args-\>getReturn(); } ... } }
Gruß Michael