Достигнуть этого довольно легко. Создать базовый модуль под
app/code/<vendor>/<module>
с
/ registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
/ и т.д. / module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_Module" setup_version="0.1.0">
</module>
</config>
Теперь вы можете удалить сообщение «Добавить в корзину», чтобы увидеть наблюдаемое событие и удалить его после отправки. Создайте /etc/events.xml
со следующим содержимым:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_cart_add_product_complete">
<observer name="your_observer_name" instance="Vendor\Module\Observer\AfterAddToCart" />
</event>
</config>
Итак, когда отправляется checkout_car_add_product_complete
, вызывается наблюдатель AfterAddToCart
. Создайте это так:
<?php
namespace Vendor\Module\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Checkout\Model\Cart as CustomerCart;
class AfterAddCart implements ObserverInterface
{
private $cart;
public function __construct(
CustomerCart $cart
){
$this->cart = $cart;
}
public function execute(EventObserver $observer)
{
$this->cart->getQuote()->setHasError(true);
}
}
Вот и все. Сообщение «Добавить в корзину» больше не будет отображаться, а все другие сообщения, такие как «Добавить в сравнение» и т. Д., Будут по-прежнему отображаться.
Изначально это решение не мое, но я не могу вспомнить, где я его нашел.