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