Magento - удаление товаров из корзины
Мне нужно удалить товары из корзины из определенной категории (категория с идентификатором =13) при загрузке страницы, если в корзину добавлен товар из этой категории. Я работал над этим довольно долго и тоже исследовал это, но я не нашел ничего, что могло бы помочь мне выполнить функцию, чтобы получить желаемый результат. Заранее спасибо за вашу помощь.
1 answers
Вы можете выполнить свои требования, используя событие magento Observer, т.е. checkout_cart_save_before. Я добился этого, создав следующий модуль, который не позволяет пользователю добавлять товар в корзину определенной категории.
Для этого вам нужно создать модуль:
-
Создайте файл регистрации модуля в разделе app/etc/modules/Tanymart_Removecart.xml со следующим кодом:
<?xml version="1.0"?> <config> <modules> <Tanymart_Removecart> <active>true</active> <codePool>community</codePool> </Tanymart_Removecart> </modules> </config>
-
Теперь в сообществе кодовый пул, создайте config.xml файл. Путь к файлу app/code/community/Tanymart/Removecart/etc/config.xml
<?xml version="1.0"?> <config> <modules> <Tanymart_Removecart> <version>0.1.0</version> </Tanymart_Removecart> </modules> <global> <models> <tanyremovecart> <class>Tanymart_Removecart_Model</class> </tanyremovecart> </models> <events> <checkout_cart_save_before> <observers> <remove_category_item> <class>Tanymart_Removecart_Model_Observer</class> <method>removeCategoryCart</method> </remove_category_item> </observers> </checkout_cart_save_before> </events> </global> <frontend> <routers> <tanyremovecart> <use>standard</use> <args> <module>Tanymart_Removecart</module> <frontName>tanyremovecart</frontName> </args> </tanyremovecart> </routers> </frontend> </config>
-
Теперь создайте Observer.php внутри Каталога модели. Путь к файлу app/code/community/Tanymart/Removecart/Model/Observer.php со следующим кодом:
<?php /** * @category Tanymart * @package Tanymart_Removecart * @author Bachcha Singh * @copyright Copyright (c) 2017 * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) */ class Tanymart_Removecart_Model_Observer { public function removeCategoryCart($observer){ $items = $observer->getEvent()->getCart()->getItems(); $oCheckout = Mage::getSingleton( 'checkout/session' ); $oQuote = $oCheckout->getQuote(); foreach($items as $item) { $_product = $item->getProduct(); if(in_array(13, $_product->getCategoryIds())) { $itemId = $item->getItemId(); $oQuote->removeItem($itemId)->save(); } } } }
Заменить 13 выше с вашей конкретной категорией.
Вот и все. Надеюсь, это вам поможет.