如果添加了其他类别的产品,Magento允许产品添加到购物车

时间:2017-06-12 05:00:47

标签: php ajax magento shopping-cart

我有一个几乎没有类别的商店,包括衬衫,裤子,配饰等等。 如果用户点击裤子的添加到购物车按钮,则在将此裤子添加到购物车之前检查是否已经添加了衬衫。目的是允许用户在添加裤子之前添加衬衫。

我可以使用ajax吗?

如果有人有解决方案,那就明白了。 谢谢

1 个答案:

答案 0 :(得分:1)

您可以为此创建自己的扩展程序,但其简单方法是。

首先你可以创建产品属性,让我们说“related_category”

并使用以下扩展名将Ajax添加到购物车。

https://www.magentocommerce.com/magento-connect/ajaxcart-3-15606.html

在此扩展程序中打开此文件

  

[应用\代码\本地\ Hardik \ Ajaxcart \控制器\结帐\ CartController.php]

并找到以下代码。

  

$ related = $ this-> getRequest() - > getParam('related_product');

在此行之后添加此代码[这里我从名为“related_category”的新创建属性中获取类别ID。

    $related_category = Mage::getModel('catalog/product')->load($product->getId())->getRelatedCategory();
    $quote = Mage::getSingleton('checkout/session')->getQuote();
    $cartItems = $quote->getAllVisibleItems(); $available = 'false';
    foreach ($cartItems as $item) {
        $productId = $item->getProductId();
        $_product = Mage::getModel('catalog/product')->load($productId);
        $productCats = $_product->getCategoryIds();
        if (count(array_intersect($related_category,$productCats))) {
            $available = 'true'; break;
        }
    }

    if($available == 'false'){
        $_response = Mage::getModel('ajaxcart/response');
        $_response->setError(true);

        $messages = array_unique(explode("\n", "Please add related product first!"));
        $json_messages = array();
        foreach ($messages as $message) {
            $json_messages[] = Mage::helper('core')->escapeHtml($message);
        }
        $_response->setMessages($json_messages);
        $url = $this->_getSession()->getRedirectUrl(true);
        $_response->send();
    }

在上面的代码我已经获取相关的类别,并检查购物车是否有可用的产品[$ available ='true']添加到购物车将正常工作,否则[$ available ='false']它将给出错误,如“请先添加相关产品!”

因此,每当客户购买“裤子”并在本产品的related_category属性中设置“衬衫”类别ID时,它会要求先添加衬衫产品。

所以,我希望这个解决方案适合你。请检查此信息,如有任何疑问,请通知我。

由于