Shopware_Modules_Basket_AddArticle_FilterSql

Filter Events sind in Shopware ja so definiert, dass man die Daten, die von dem Filter übergeben werden, manipulieren kann.

Das scheint bei dem Event Shopware_Modules_Basket_AddArticle_FilterSql in der Klasse sBasket.php nicht der Fall zu sein. Es ist der ideale Filter um z.B. den Artikeltext mit weiteren Informationen anzureichern. Diese würde dann auch auf der Bestellung erscheinen.

Aber leider bekommt man nur ein SQL-Statement und ein paar Variablen übergeben, die mit dem SQL-Statement keine Verbindung haben.

INSERT INTO s_order_basket (id, sessionID, userID, articlename, articleID, ordernumber, shippingfree, quantity, price, netprice, datum, esdarticle, partnerID, config) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) $sql = $this->eventManager->filter( 'Shopware_Modules_Basket_AddArticle_FilterSql', $sql, [ 'subject' => $this, 'article' => $article, 'price' => $price, 'esd' => $sEsd, 'quantity' => $quantity, 'partner' => $this->session->get('sPartner'), ] ); ...  mehr lesen

Shopware Plugin Javascript

Um bei einem Shopware Plugin eine Javascript Datei hinzuzufügen, legt man die entsprechende Datei im Ordner Pluginordner/Resources/frontend/js ab.

Damit die Datei in Shopware eingebunden wird, muss das Theme im Backend neu zugewiesen und kompiliert werden. Dabei schaut Shopware automatisch in diesen Ordner und bindet alle enthaltenen js Dateien ein.Die Datei ist dann nicht als einzelner Dateiaufruf in die HTML-Seite eingebunden, sondern wird an eine „grosse“ Javascript Datei, in der alle Javascript Funktionen enthalten sind, angefügt. ...  mehr lesen

Shopware Plugin Template

Plugins können auch ihre eigenen Templates registrieren. Dafür legt man in der Verzeichnisstruktur des Plugins einen Unterordner …../Resources/views an. Diesen Ordner kann man nennen wie man will, aber es haben sich diese Verzeichnissnamen als Konvention eingebürgert.

Je nachdem in welchem Bereich man nun ein Teplate registrieren möchte wird in diesem Ordner der Pfad zur Templatedatei aus dem Templateverzeichnis nachgebildet. Um z.B. die Artikel Detailansicht zu überschreiben legt man in diesem Verzeichnis die Datei /frontend/detail/data.tpl an.

Damit dieses Template nun genutzt wird, muss man noch im Plugin den Templatepfad zu dem neuen Template registireren.

......... // In dieser Funktion des Plugins werden Die Events regisriert, auf die das Plugin reagieren soll // in diesem Fall soll die Funktion onPostDispatchDetail jedesmal aufgerufen werden, wenn die Detailseite // über den Controller engine/Shopware/Controllers/Frontend/Details.php aufgerufen wird. public static function getSubscribedEvents(){ return [ 'Enlight_Controller_Action_PostDispatch_Frontend_Detail' => 'onPostDispatchDetail', ]; } // Die Funtion bekommt den aufgerufenen Controller als Argument übergeben public function onPostDispatchDetail(\Enlight_Event_EventArgs $args){ $controller = $args->getSubject(); // Registrieren des Plugin Template Verzeichnisses $controller->View()->addTemplateDir(__DIR__ . '/Resources/views'); } ....... ...  mehr lesen

Shopware Smarty Block if

In Smarty Templates können bei der Vererbung Blöcke nicht innerhalb einer if-Abfrage definiert werden. Folgender Code funktioniert nicht. Der entsprechende Block wird nicht überschrieben. Dabei ist das Freitetxtfeld attr20 im Shopware Backend als Checkbox definiert. Sie gibt an, ob der Preis ein Anfragepreis ist. ...  mehr lesen

Shopware Plugin Css

Wenn man in einem Plugin CSS Code hinzufügen will, ist die einfachste Möglichkeit die CSS-Datei im Order PluginOrdner/Resources/frontend/css/*.css abzulegen. Wenn man nun das Template neu kompiliert, wird das CSS automatisch in Shopware eingebunden.

Das gleiche gilt für Javascript und Less Dateien. Diese müssen entsprechend im Ordner PluginOrdner/Resources/frontend/js/*.js und PluginOrdner/Resources/frontend/less/*.less abgelegt werden.

Der Nachteil ist, dass die Dateien global in Shopware eingebunden werden, unabhängig davon, ob das Plugin nur auf einer bestimmten Seite eingreift. Wenn man also im Plugin nur die Artikel Detailseite verändert, werden die Dateien auch auf der Startseite, dem Kontaktformular und allen anderen Seiten eingebunden. ...  mehr lesen