[gelöst] Plugin - Selectbox im Frontend füllen

Hallo, ich bin gerade dabei mein erstes Plugin für Shopware zu erstellen. Hatte vorher noch nie etwas mit Shopware zu tun. Ich möchte im Frontend mehrere Comboboxen als Zusatzfilter für die Artikel anzeigen und mit Werten aus der DB (genauer Artikelattribute) füllen. Derzeit bin ich soweit, dass der Filter nur in den dafür vorgesehenen Kategorien angezeigt wird. Die Abfrage zum Füllen der ersten Combobox habe ich auch schon fertig und syntaktisch ist wohl auch alles korrekt. Das Plugin läuft bis hierhin. Mein Problem ist jetzt, wie ich nun vom Code heraus die Combobox füllen kann. Dazu habe ich bisher kein Beispiel gefunden. Hab auch schon im Forum gesucht. Hier mal mein Code: public static function onPostDispatch(Enlight\_Event\_EventArgs $args) { //Der standard Pre/Post Dispatcher wird bei jedem Request aufgerufen (Frontend/Backend) $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); $view = $args-\>getSubject()-\>View(); if(!$request-\>isDispatched() || $response-\>isException() || $request-\>getModuleName() != 'frontend' || ($request-\>getModuleName() == 'frontend' && $request-\>getControllerName() == 'index' ) ) { return; } $getMarken = Enlight\_Class::Instance(\_\_CLASS\_\_)-\>loadMarkenFromDatabase($sCategory); if (!empty($getMarken)){ // } $view-\>extendsTemplate(dirname(\_\_FILE\_\_).'/plugin.tpl'); } public function loadMarkenFromDatabase($categorie){ // Marken aus Datenbank auslesen $data = Shopware()-\>Db()-\>fetchAll(" SELECT distinct att.attr1 AS Marke FROM s\_articles art join s\_articles\_attributes att on art.ID = att.articleID join s\_articles\_categories cat on art.ID = cat.articleID WHERE cat.categoryID = ? ",array($categorie)); foreach ($data as $row){ $snippets[$row["Marke"]] = $row; } return $snippets; } So, wie bekomme ich nun den wert aus der Abfrage (Spalte Marke) ins Frontend? [code]{block name=„frontend_index_content“ prepend} {if $sCategoryContent.ac_attr6 == 1}

....[/code] Also hier dann weitere Options anlegen. Gibt es auch ein Tutorial, wie ich dann nach Auswahl in der ersten Combobox die nächste Combobox mit Werten aus der DB füllen kann? Also irgendwie per Ajax.

Bin für jeden Tipp dankbar.

Gruß sturzi

Marke:

So, ich antworte mir mal selbst. An die aktuelle Kategorie kommt man mit $category = Shopware()-\>Shop()-\>get('parentID'); Das erstellte Datenarray kann man dann zb. mit $view-\>FilterboxMarken = $getMarken; ans Frontend zurückgeben und in der tpl Datei dann einfach mit {foreach from=$FilterboxMarken item=sEntry} <option value="{$sEntry}">{$sEntry}</option>{/foreach} die Ausgabe durchführen.

Es bleibt für mich nun noch die Herausforderung mit dem Ajax Request. Hat da jemand ein möglichst einfaches Beispiel für mich. Meinetwegen nach Auswahl in der Combobox einen Request ans Plugin, was einfach erst mal eine Zeichenkette zurück gibt. Das würde mir sehr helfen.

Hallo Sturzi, bist Du an dieser Stelle zu einer Lösung gekommen? Plage mich gerade mit der gleichen Frage! Viele Grüße, Christian

Hallo Christian, ja, ich bin zu einer Lösung gekommen. Schau dir mal den Thread programmierung-f13/beispiel-fur-ajaxaufruf-an-eigenes-plugin-t6679.html an. Da steht alles zum Ajaxrequest drin. Wenn Du dann noch Fragen hast, dann einfach fragen.

Hallo sturzi, vielen Dank für den schnellen Hinweis. Ich schaue es mir morgen mal genauer an. Viele Grüße und noch einen schönen Abend, Christian