Magento - 从购物车中取出产品

时间:2017-09-12 19:43:56

标签: php function magento magento-1.9

如果从该类别添加到购物车中的产品,我需要在页面加载时从特定类别(ID = 13的类别)中删除购物车产品。我已经研究了很长一段时间并研究它,但我找不到任何可以帮助我完成功能以获得我想要的结果的东西。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用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();
                        }
                    }
    
        }
    }
    
  4. 将上面的 13 替换为您的特定类别。

    那就是它。 希望它会对你有所帮助。