Sto cercando di ordinare gli articoli in base alla quantità di prodotto ordinata.
Esiste un metodo logico per ordinare gli articoli del carrello in base alla quantità ordinata?
Sto cercando di ordinare gli articoli in base alla quantità di prodotto ordinata.
Esiste un metodo logico per ordinare gli articoli del carrello in base alla quantità ordinata?
Risposte:
È possibile utilizzare il getItems()
plug-in per ordinare le voci di preventivo:
Crea questo plugin
<type name="Magento\Checkout\Block\Cart">
<plugin name="item_filter" type="[Your]\[Module]\Plugin\Checkout\Block\Cart" />
</type>
Nel tuo carrello.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
, dovrebbe essereYour\Module\Plugin\Checkout\Block\Cart
Innanzitutto crea un plug-in,
In di.xml utilizzare:
<type name="Magento\Checkout\CustomerData\Cart">
<plugin name="SortByQty" type="Vendor\Module\Plugin\Cart"/>
</type>
Quindi in Cart.php aggiungi una funzione dopo GetSectionData,
Ora la logica verrà eseguita per l'ordinamento, ma posso dire l'inizio:
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);
}