Liste aller Kategorien eines Produktes auf der Detailseite

Hallo, hat jemand von euch schon versucht alle zu einem Produkt dazugehörigen Kategorien auf der Detailseite auszugeben? Bzw. einen Ansatz für ein Detail Pages Plugin? Gruß Florian

Meinst du die Kategorien mit Bezeichnung und Link auf der Detailseite ausgeben? Ist ja eigentlich nicht so schwer. 1.) Post-Dispatch auf Frontend_Detail 2.) Dort aus dem View-Objekt die Artikel ID holen ($id = $args->View()->sArticle[“articleID”]:wink: 3.) Dann die dazugehörigen Kategorien abfragen $getCategories = Shopware()->Db()->fetchAll(" SELECT c.description,c.id FROM s_articles_categories ac, s_categories c WHERE ac.articleID = ? AND ac.categoryID = c.id GROUP BY c.id ORDER BY c.description "); 4.) Das Ergebnis dieser Query wieder an den View geben $args->View()->CategoriesWhereThisArticleIsListed = $getCategories; 5.) Im Template über das Array {$CategoriesWhereThisArticleIsListed} iterieren (foreach) und für jede Kategorie die Description ausgeben - ggf. auch direkt via {url controller=listing sCategory=$id} die passenden Links zu den Kategorien dazu zaubern.

2 „Gefällt mir“

Hi zusammen, jetzt habe ich gerade mal versucht, das Ding für die Listenansicht nachzubauen, leider ohne Erfolg. So siehst dann beim Dispatcher aus und das Ganze kracht: /\*\* \* Event listener function which called over the Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index event. \* \* @param Enlight\_Event\_EventArgs $arguments \*/ public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { $controller = $arguments-\>getSubject(); $view = $controller-\>View(); $request = $controller-\>Request(); $controllerName = $request-\>getControllerName(); $config = Shopware()-\>Plugins()-\>Frontend()-\>CbCategoriesInfo()-\>Config(); $pattern = array\_map('trim', explode(',', $config-\>allowedController)); if(!in\_array($controllerName, $pattern)) { return; } $id = $arguments-\>View()-\>sArticle["articleID"]; $select = " SELECT c.description, c.id FROM s\_articles\_categories ac, s\_categories c WHERE ac.articleID = ? AND ac.categoryID = c.id GROUP BY c.id ORDER BY c.description "; $categories = Shopware()-\>Db()-\>fetchAll($select, array($id)); $arguments-\>View()-\>CategoriesInfoListed = $categories; } Wäre ganz schön, wenn mir jemand auf die Sprünge helfen könnte. Vielen Dank und viele Grüße, Chris

So klappts mit der Nachbarin: $articles = $view-\>getAssign('sArticles'); foreach($articles as &$article) { $id = $article['articleID']; }

Das geht natürlich so nicht, da immer alle Artikel zurückgegeben werden. Ich habe das Ganze jetzt als Widget geschrieben und direkt an der Stelle eingebunden, nach der Kategorie NEU in einer Schleife abgefragt und schon werden alle Artikel, die der Kategorie NEU zugeordnet sind, mit nem „NEU“ Badge versehen.