php - Magento - 从购物车中删除产品

标签 php function magento magento-1.9

当页面加载时,如果有产品从该类别添加到购物车,我需要从某个类别(id = 13 的类别)中删除购物车产品。我已经为此工作了很长一段时间并进行了研究,但我没有找到任何可以帮助我完成该功能以获得我想要的结果的东西。预先感谢您的帮助。

最佳答案

您可以通过使用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. 现在在Model目录中创建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 替换为您的具体类别。

就是这样。 希望对您有帮助。

关于php - Magento - 从购物车中删除产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46184226/

相关文章:

php - Doctrine Extensions REGEXP 在 Symfony2 中不起作用

php - 如果 CURLOPT_SSL_VERIFYPEER 为假,数据传输是否不再安全?

php - PHP 中是否有可选链接?

c++ - 递归和函数 c++

magento - 在 Magento 结帐页面上显示错误消息(运输方式阶段)

magento - 从头开始新的 Magento 主题 [给新手的建议]

php - Magento - 检查特定类别是否处于事件状态

php - 我正在为网站制作时事通讯,但它没有连接到服务器

C++:指向另一个类函数的函数指针

JavaScript 检查变量是否存在(已定义/初始化)