2016-04-02 11 views
0

Mağazamda ön sipariş satıyorum. Ve defter tutma nedenleriyle, müşterilerin aynı siparişte hem düzenli hem de ön sipariş ürünlerini satın almasına izin veremem. Tüm ön siparişlerde "ön sipariş" özelliği Evet olarak ayarlanmıştır. Şimdi, müşterilerimi aynı alışveriş sepetinde ön siparişli ürünlerle birlikte düzenli ürünler yerleştirmelerine izin vermem gerekiyor. Müşteriler tam olarak bunu yapmaya çalıştığında, "Ön siparişli ürünlerle normal ürünleri karıştıramazsınız" iletisini oluşturarak. Bunu nasıl başarmanın bir fikri?Magento, ürünlerin alışveriş sepetindeki miks ve karı karışıklığını önler

+0

Bu kodu kendiniz isteyen var mı? – Enigmativity

+0

Evet, her iki ürün türünü birlikte eklemek istiyorum. Şimdi ileti alıyorum "Üzgünüz, düzenli ve sipariş öncesi ürünleri karıştırılamıyor." – Savin

cevap

0

İşinizi yapmak için bir gözlemci kullanabilirsiniz. Maalesef, Magento, kullanıcı bir şeyleri sepete eklemeden önce işlenecek bir etkinliğe sahip değil. Yani Magento kendisi aslında checkout_cart_product_add_after olayını kullanıyor.

app/kod// My/EventListener/etc/Config.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
     <My_Eventlistener> 
      <version>1.0.0</version> 
     </My_Eventlistener> 
    </modules> 
    <global> 
     <models> 
      <my_eventlistener> 
       <class>My_Eventlistener_Model</class> 
      </my_eventlistener> 
     </models> 
    </global> 
    <frontend> 
     <events> 
      <checkout_cart_product_add_after> 
       <observers> 
        <my_checkout_cart_product_add_afte> 
         <class>my_eventlistener/observer</class> 
         <method>checkoutCartProductAddAfter</method> 
        </my_checkout_cart_product_add_after> 
       </observers> 
      </checkout_cart_product_add_after> 
     </events> 
    </frontend> 
</config> 

app/etc/modules/My_Eventlistener.xml yerel: Yani şu modül oluşturmak

<?xml version="1.0"?> 
<config> 
    <modules> 
     <My_Eventlistener> 
      <active>true</active> 
      <codePool>local</codePool> 
     </My_Eventlistener> 
    </modules> 
</config> 

app/kod/yerel/My/EventListener/Model/Observer.php

<?php 

class My_Eventlistener_Model_Observer 
{ 
    public function checkoutCartProductAddAfter() { 
     $quoteItem = $observer->getEvent()->getQuoteItem(); 
     $product = $observer->getEvent()->getProduct(); 
     $quote = $quoteItem->getQuote(); 

     //Flag that becomes true if he has mixed products. 
     $he_has_mixed_products = false; 

     /* 
     * Check here if he has mixed products in his cart 
     */ 

     if($he_has_mixed_products) 
      $quote->removeItem($quoteItem->getId()); 
      Mage::throwException('You cannot mix regular products with pre order products!'); 
     } 
    } 

}