Ich versuche, die Artikel nach der bestellten Produktmenge zu sortieren.
Gibt es eine logische Methode für die Sortierung von Warenkorbartikeln nach bestellter Menge?
Ich versuche, die Artikel nach der bestellten Produktmenge zu sortieren.
Gibt es eine logische Methode für die Sortierung von Warenkorbartikeln nach bestellter Menge?
Antworten:
Sie können das getItems()
Plugin verwenden, um Angebotselemente zu sortieren:
Erstellen Sie dieses Plugin
<type name="Magento\Checkout\Block\Cart">
<plugin name="item_filter" type="[Your]\[Module]\Plugin\Checkout\Block\Cart" />
</type>
In Ihrer Cart.php
public function afterGetItems(\Magento\Checkout\Block\Cart $subject){
$items = [];
$totalItems = [];
$itemAdded = [];
foreach ($subject->getQuote()->getAllItems() as $item) {
$totalItems[] = $item->getId();
if(/*Your Condition*/){
/*you can sort item by qty wise*/
/*you can get qty using $item->getQty();*/
$itemAdded[] = $item;
$items[] = $item;
}
}
$result = array_diff($totalItems, $itemAdded);
foreach ($result as $quoteid) {
if($quoteid){
$item = $this->cart->getQuote()->getItemById($quoteid);
$items[] = $item;
}
}
return $items;
}
Magento\Checkout\Block\Cart
, sollte es seinYour\Module\Plugin\Checkout\Block\Cart
Erst ein Plugin erstellen,
In di.xml verwenden Sie:
<type name="Magento\Checkout\CustomerData\Cart">
<plugin name="SortByQty" type="Vendor\Module\Plugin\Cart"/>
</type>
Fügen Sie dann in Cart.php eine Funktion afterGetSectionData hinzu.
Jetzt wird die Logik für das Sortieren gemacht, aber ich kann den Anfang sagen:
public function afterGetSectionData(\Magento\Checkout\CustomerData\Cart $subject, $result){
$items = $result['items'];
foreach ($items as $key => $value) {
$_productId = $value['product_id'];
$_productPrice = $value['product_price_value'];
$_productQty = $value['qty'];
$_productTotal = $_productPrice * $_productQty;
}
$data = [
'items' => $items
];
return $result = array_merge($data, $result);
}