Мне нужно удалить все отключенные продукты из списка желаний, и для этого я записываю проверку статуса продукта в Magento_Wishlist/templates/item/list.phtml
следующим образом:
if($product->getStatus() == \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED):
------------
endif;
Я также добавляю плагин для обновления списка пожеланий в заголовкечасть как показано ниже:
/ etc / di.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Wishlist\CustomerData\Wishlist">
<plugin name="vendor-customer-wishlist"
type="Vendor\Customer\Plugin\WishlistPlugin" sortOrder="1" />
</type>
</config>
Поставщик / Клиент / Плагин / WishlistPlugin
<?php
namespace Vendor\Customer\Plugin;
use Magento\Catalog\Model\Product\Attribute\Source\Status;
/**
* Class WishlistPlugin
* @package Vendor\Customer\Plugin
*/
class WishlistPlugin
{
/**
* @var \Magento\Wishlist\Helper\Data
*/
protected $wishlistHelper;
/**
* @param \Magento\Wishlist\Helper\Data $wishlistHelper
*/
public function __construct(
\Magento\Wishlist\Helper\Data $wishlistHelper
) {
$this->wishlistHelper = $wishlistHelper;
}
/**
* Plugin function after get section data
*
* @param \Magento\Wishlist\CustomerData\Wishlist $subject
* @param $result
* @return mixed
*/
public function afterGetSectionData(\Magento\Wishlist\CustomerData\Wishlist $subject, $result)
{
$disabledProductsCount = 0;
foreach ($this->wishlistHelper->getWishlistItemCollection() as $item) {
if($item->getProduct()->getStatus() == Status::STATUS_DISABLED) $disabledProductsCount++;
}
$counterNumber = $this->wishlistHelper->getItemCount();
if($disabledProductsCount) {
$counterNumber -= $disabledProductsCount;
}
$result['counter'] = $counterNumber;
return $result;
}
}
Но когда я добавляю три элемента в список пожеланийи отключите один продукт от этого, тогда счетчик списка желаний не обновляется должным образом, и это остается три.Кто-нибудь, пожалуйста, помогите мне решить эту проблему?