2013-04-18 2 views
1

У меня проблема с Magento.Ограничение количества заказа по категориям или добавление дополнительной стоимости доставки по категориям в Magento

У меня есть категория, в которой клиенты могут купить только один продукт из этой категории в заказе. Я успешно установил такие параметры, чтобы в настройках продукта можно было добавить только один элемент. Однако, если клиент возвращается к этой категории, он все еще может добавить еще один продукт в эту категорию. Скажем, он выбирает продукт A из категории A, он может вернуться в категорию A, чтобы выбрать продукт B. То, что я хочу, всегда, для этого заказа он может купить только один продукт из категории A.

Если это не так, возможно, я хочу добавить дополнительную плату за доставку, если из этой категории выбрано более 1 продукта.

У кого-нибудь есть решение для этого?

ответ

1

См Magento: limit 3 products from category per order

Создание наблюдателя для события checkout_cart_product_add_after

 <events> 
     <checkout_cart_product_add_after> 
      <observers> 
       <enableduplicateproductstatus> 
        <type>singleton</type> 
        <class>limitcartproductbycategory/observer</class> 
        <method>cartlimit</method> 
       </enableduplicateproductstatus> 
      </observers> 
     </checkout_cart_product_add_after> 
    </events> 

Создать: приложение/код/​​местные/MagePal/LimitCartProductByCategory/Модель/Observer.php

class MagePal_LimitCartProductByCategory_Model_Observer 
{ 

    public function cartlimit(Varien_Event_Observer $observer) 
    { 
     $category_ids = array(); 

     $quote = Mage::getSingleton('checkout/session')->getQuote(); 
     foreach($quote->getAllVisibleItems() as $item){ 
       $product = Mage::getModel('catalog/product')->load($item->getId()); 
       $product_category_ids = explode(",", $product->getCategoryIds()); 
       //$product_category_ids = $product->getCategoryIds(); 

       array_push($category_ids, $product_category_ids); 
     } 

     $justAdded = $observer->getQuoteItem(); 


     $productJustAdded = Mage::getModel('catalog/product')->load($justAdded->getId()); 

     //total the category id in $category_ids 
     //if $productJustAdded->getCategoryIds exist in $category_ids, 
     //then check to see if category id count greater than 3 
     // if true then add error msg and try setting the qty to 0 

     return $this; 
    } 
}