Artikel im Warenkorb nach Händler sortieren

Ich bin mal wieder an dem Punkt, an dem ich nicht mehr weiterkomme. Ich möchte im Warenkorb die Artikel nach Hersteller sortieren, da ich so im Falle von Streckenartikeln die Versandkosten je Händler ausweisen kann.

In dem Template basketcontents_table.tpl wird via
[{assign var=“basketitemlist” value=$oView->getBasketArticles()}]
die Liste aller BasketItem geholt, also müsste es ja genügen, wenn ich in der Basket.php die Funktion getBasketArticles() überschreibe und den zurückgegebenen Array $aBasketArticles vor dem return sortiere.

Aber genau daran scheitere ich. Was für Objekte habe ich in diesem Array? oxArticle oder oxOrderArticle? ($oProduct = $oBasketItem->getArticle(true); was ist $oProduct?)
Unabhängig davon, wie kann ich auf einzelne Attribute der Objekte zugreifen, um dann via usort den Array $aBasketArticles sortieren?

Alle Beiträge zum Thema Sortieren von Objekten hier im Forum haben mir leider nicht weitergeholfen. Steh’ mal wieder auf dem Schlauch. Oder gibt es andere Ideen, wie ich das evtl. auch anders lösen kann? Vielleicht hat das ja schon mal jemand gemacht.

Grüße, Thomas

In einem alten Beitrag habe ich folgenden Hinweis gefunden:

der Warenkorb ist ein Array von oxarticle-Objekten. Er wird generiert in der Funktion getBasketArticles() in /core/oxbasket. Du musst also eigentlich nur das Array nach den Artikelnummern der enthaltenen oxarticle-Objekte sortieren und hast, was Du suchst.

Ich verstehe nicht, warum ich für den Zugriff auf die einzelnen Array-Elemente einen Schlüssel benötige, so gibt mir var_dump($aBasketArticles[“0a5b937cc35467b6a3bca34c8a9e48d3”]->oxarticles__oxmanufacturerid->value);
die benötigte Hersteller-Id zurück, aber über
var_dump($aBasketArticles[0]);
bzw.
var_dump($aBasketArticles[0]->oxarticles__oxmanufacturerid->value);
erhalte ich nur NULL.

Die entsprechende Datenbankabfrage finden und um Deine Sortierung ergänzen.

Danke für den Hinweis, hatte ich im Forum schon mal als Tipp gelesen. Wäre die einfachste Lösung.

Ich bin allerdings davon ausgegangen, dass die Artikel eines Warenkorbes nicht aus der Datenbank kommen, sondern erst im Falle einer Order in die DB zurückgeschrieben werden. Ich demnach auch keine Datenbankabfrage für den Basket habe.

Oder liege ich da falsch?

Der Warenkorb wird in der Session gespeichert und die Artikel daraus abgerufen. Bei angemeldetem User wird der Warenkorb beim Logout in die Datebank geschrieben (sofern im Admin so eingestellt). Bei erneutem Login wird der Warenkorb wieder geladen.
`

$basket = $this->getSession()->getBasket();

`

Ich würde in getBasket() sortieren.

Danke. Werde ich versuchen.

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.