magento 2 - Установить ограничение для сравниваемого продукта
Мне нужно установить ограничение для сравниваемого продукта , например: max_limit 4
, Но теперь он добавляет количество продуктов в список сравнения.
Пожалуйста, предложите.
2
Author: Khoa TruongDinh, 2017-02-13
2 answers
Мы можем попробовать с помощью плагина. Мы используем Magento\Catalog\Helper\Product\Compare
для получения текущих сравниваемых продуктов.
app/code/Company/Catalog/etc/frontend/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\Catalog\Controller\Product\Compare\Add">
<plugin name="LimitToCompareProducts"
type="Company\Catalog\Model\Plugin\Compare\LimitToCompareProducts"/>
</type>
</config>
app/code/Company/Catalog/Model/Plugin/Compare/LimitToCompareProducts.php
<?php
namespace Company\Catalog\Model\Plugin\Compare;
use Magento\Framework\Controller\Result\RedirectFactory;
use Magento\Framework\Message\ManagerInterface;
use Magento\Catalog\Helper\Product\Compare;
class LimitToCompareProducts
{
const LIMIT_TO_COMPARE_PRODUCTS = 3;
/**
* @var \Magento\Framework\Message\ManagerInterface
*/
protected $messageManager;
/**
* @var RedirectFactory
*/
protected $resultRedirectFactory;
/** @var Compare */
protected $helper;
/**
* RestrictCustomerEmail constructor.
* @param Compare $helper
* @param RedirectFactory $redirectFactory
* @param ManagerInterface $messageManager
*/
public function __construct(
RedirectFactory $redirectFactory,
Compare $helper,
ManagerInterface $messageManager
)
{
$this->helper = $helper;
$this->resultRedirectFactory = $redirectFactory;
$this->messageManager = $messageManager;
}
public function aroundExecute(
\Magento\Catalog\Controller\Product\Compare\Add $subject,
\Closure $proceed
){
$count = $this->helper->getItemCount();
if($count > self::LIMIT_TO_COMPARE_PRODUCTS) {
$this->messageManager->addErrorMessage(
'You can add the compared products under 3 item(s)'
);
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
return $resultRedirect->setRefererOrBaseUrl();
}
return $proceed();
}
}
3
Author: Khoa TruongDinh, 2017-02-13 08:33:13
@анкит
What about Admin -> Stores -> Configuration -> Catalog -> Catalog -> Recently Viewed/Compared Products -> Default Recently Compared Products Count?
Это не ограничивает количество товаров в вашем сравнении.
0
Author: user3653773, 2019-03-12 13:44:17