So erhalte ich die Warenkorbartikel:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Ich würde gerne so etwas machen:
$items->sortBy('updated_at','desc');
Was ist der richtige Weg, dies mit Magento zu tun?
Ich bin versucht, so etwas zu tun:
$productArray=array();
foreach($items as $item){
$product=$item->getProduct();
array_push($productArray,$product);
}
$productArray = $this->sortArray($productArray);
protected sortArray($productArray){
...sort by updated date;
return $sortedArray
}
Allerdings müsste ich eine Reihe von dateTime-Objekten erstellen, um diese Werte leicht vergleichen zu können, und dies scheint eine etwas rechenintensive Operation zu sein.
Antworten:
Es gibt keine Funktion zum Sortieren nach
wegen des
getAllItems
Kommens vomarray
Gegenstand und gemäß meinemconcept you cannot sort this by field.
In diesem Fall können Sie die
getItemsCollection().
Funktion sort by any Field verwendenBearbeiten:
Schreiben Sie die Klasse Mage_Sales_Model_Quote um
Es ist besser , die Klasse umzuschreiben.
Mage_Sales_Model_Quote
In diesem Aufruf ist magentocalled getAllItems()
function und getItemsCollection() function
main responsive, um alle Items zu bekommen.Klasse umschreiben:
Verwenden Sie die Funktion setOrder () für Sortieren:
Die Funktion setOrder () sortiert die Elementauflistung nach Feldern
quelle
Lösung:
Schreiben Sie Ihre Methode
Mage_Sales_Model_Quote::getAllVisibleItems
damit um:Früh geschrieben:
Wahrscheinlich ist es in dieser Situation keine sehr gute Lösung, aber denken Sie daran. (Magento hat viele solche Orte, an denen es nützlich sein kann)
In die getData () -Methode wird ein beliebiges Feld eingefügt, das sortiert werden soll. In deinem Fall kann es sein
updated_at
. Beim Einfügenupdated_at
besser seinen Zeitstempel einfügen.quelle