一、配置
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Checkout\CustomerData\Cart"
type="Silk\Checkout\CustomerData\Cart" />
</config>
二、重写Cart.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Silk\Checkout\CustomerData;
/**
* Cart source
*/
class Cart extends \Magento\Checkout\CustomerData\Cart
{
/**
* Get array of last added items
*
* @return \Magento\Quote\Model\Quote\Item[]
*/
protected function getRecentItems()
{
$items = [];
if (!$this->getSummaryCount()) {
return $items;
}
//gift product put in end
$giftProduct = '';
foreach (array_reverse($this->getAllQuoteItems()) as $item) {
/* @var $item \Magento\Quote\Model\Quote\Item */
if (!$item->getProduct()->isVisibleInSiteVisibility()) {
$product = $item->getOptionByCode('product_type') !== null
? $item->getOptionByCode('product_type')->getProduct()
: $item->getProduct();
$products = $this->catalogUrl->getRewriteByProductStore([$product->getId() => $item->getStoreId()]);
if (!isset($products[$product->getId()])) {
//gift product
$giftProduct = $this->itemPoolInterface->getItemData($item);
continue;
}
$urlDataObject = new \Magento\Framework\DataObject($products[$product->getId()]);
$item->getProduct()->setUrlDataObject($urlDataObject);
}
$items[] = $this->itemPoolInterface->getItemData($item);
}
if ($giftProduct) {
$items[] = $giftProduct;
}
return $items;
}
}