Magento - удаление товаров из корзины


Мне нужно удалить товары из корзины из определенной категории (категория с идентификатором =13) при загрузке страницы, если в корзину добавлен товар из этой категории. Я работал над этим довольно долго и тоже исследовал это, но я не нашел ничего, что могло бы помочь мне выполнить функцию, чтобы получить желаемый результат. Заранее спасибо за вашу помощь.

Author: Matheus Portela, 2017-09-12

1 answers

Вы можете выполнить свои требования, используя событие magento Observer, т.е. checkout_cart_save_before. Я добился этого, создав следующий модуль, который не позволяет пользователю добавлять товар в корзину определенной категории.

Для этого вам нужно создать модуль:

  1. Создайте файл регистрации модуля в разделе app/etc/modules/Tanymart_Removecart.xml со следующим кодом:

    <?xml version="1.0"?>
    <config>
        <modules>
            <Tanymart_Removecart>
                <active>true</active>
                <codePool>community</codePool>
            </Tanymart_Removecart>
        </modules>
    </config>
    
  2. Теперь в сообществе кодовый пул, создайте 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>
    
  3. Теперь создайте 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 выше с вашей конкретной категорией.

Вот и все. Надеюсь, это вам поможет.

 2
Author: Bachcha Singh, 2017-09-15 05:27:17