अलग-अलग विशेषताओं के साथ कई वस्तुओं को प्रोग्रामेटिक रूप से कार्ट में जोड़ना


15

मैं कार्ट सिस्टम में बल्क ऐड बना रहा हूं। कृपया ध्यान दें: मैं चाहता हूं कि यह कस्टम विकल्पों के साथ सरल उत्पादों के लिए काम करे -> जहां कस्टम विकल्प रंग (लाल, हरा, नीला) या आकार (Xl, M, S) जैसे हों

मान लीजिए कि कोई व्यक्ति नीचे आइटम ऑर्डर करना चाहता है:

  1. productए, redरंग, qty१२
  2. Productए, greenरंग, qty१ 18
  3. Productबी, XLक्यूटी ३
  4. Product सी, मात्रा १०

इसलिए मैं इन 4 वस्तुओं को एक बार में कोड / प्रोग्राम द्वारा जोड़ना चाहता हूं। मैं यह कैसे कर सकता हूँ? क्या यह क्वेरी स्ट्रिंग, या किसी नियंत्रक के माध्यम से संभव है या उसके लिए फ़ंक्शन में बनाया गया है? यह केवल देखने के लिए एक क्वेरी या एक फ़ंक्शन कॉल नहीं है ...


हाँ बिल्कुल मैं यह कैसे कर सकता हूँ
user1799722

आप किस प्रकार के उत्पाद का उपयोग कर रहे हैं?
अमित बेरा

@AmitBera मैं सरल उत्पादों का उपयोग कर रहा
हूं

जवाबों:


1

इसलिए प्रोग्राम को कार्ट में शामिल करने के लिए उत्पादों को जोड़ना काफी सरल है, बस आपको उत्पाद ऑब्जेक्ट और कार्ट सेशन की आवश्यकता है।

$quote = Mage::getSingleton('checkout/session')->getQuote();
$quote->addProduct($product, $qty);

$quote->collectTotals()->save();

यह क्योंकि विकल्पों के साथ विन्यास योग्य या उत्पादों को जोड़ने पर थोड़ा अधिक कठिन है, लेकिन आपको केवल सही विकल्प के साथ उत्पाद ऑब्जेक्ट को लोड करने की आवश्यकता है।

अब आपको क्या $qtyकरना चाहिए इसके बजाय एक सरणी पास करना होगा और इस सरणी को एक अलग तरीके से स्वरूपित किया जाना चाहिए, जो इस बात पर निर्भर करता है कि आप किस प्रकार का उत्पाद जोड़ रहे हैं।

अधिक जानकारी के लिए निम्नलिखित देखें:


धन्यवाद मैं सिर्फ विशेषताओं के साथ सरल वस्तुओं को जोड़ना चाहता हूं pls मेरे सवाल को फिर से पढ़ना
user1799722

1
@ इसलिए आप कार्ट के माध्यम से उत्पादों को जोड़ सकते हैं, लेकिन मुझे नहीं लगता कि यह कई उत्पादों के साथ काम करेगा इसलिए मैं सुझाव देता हूं कि अपने स्वयं के नियंत्रक का निर्माण करें क्योंकि मेरे जवाब में कई उत्पादों को जोड़ना है।
डेविड मैनर्स

1

कुछ समय पहले मैंने एक विधि का उपयोग किया था:

// Products array
$productArray = array(
    // Simple product
    array(
        'product_id' => 1,
        'qty' => 1
    ),
    // Configurable product
    array(
        'product_id' => 4,
        'qty' => 1,
        'options' => array(
            'color' => 'Red'
        )
    )
);

// Prepare cart products
$cartProducts = array();
foreach ($productArray as $params) {
    if (isset($params['product_id'])) {
        // Load product
        $product = Mage::getModel('catalog/product')->load($params['product_id']);

        if ($product->getId()) {
            // If product is configurable and the param options were specified
            if ($product->getTypeId() == "configurable" && isset($params['options'])) {
                // Get configurable options
                $productAttributeOptions = $product->getTypeInstance(true)
                    ->getConfigurableAttributesAsArray($product);

                foreach ($productAttributeOptions as $productAttribute) {
                    $attributeCode = $productAttribute['attribute_code'];

                    if (isset($params['options'][$attributeCode])) {
                        $optionValue = $params['options'][$attributeCode];

                        foreach ($productAttribute['values'] as $attribute) {
                            if ($optionValue == $attribute['store_label']) {
                                $params['super_attribute'] = array(
                                    $productAttribute['attribute_id'] => $attribute['value_index']
                                );
                            }
                        }
                    }
                }
            }

            unset($params['options']);
            $cartProducts[] = array(
                'product'   => $product,
                'params'    => $params
            );

        }
    }
}

// Add to cart
$cart = Mage::getModel("checkout/cart");
if (!empty($cartProducts)) {
    try{
        foreach ($cartProducts as $cartProduct) {
            $cart->addProduct($cartProduct['product'], $cartProduct['params']);
        }

        Mage::getSingleton('customer/session')->setCartWasUpdated(true);
        $cart->save();
    } catch(Exception $e) {
        Mage::log($e->getMessage());
    }
}

अपने सुंदर सीधे आगे और परीक्षण अभी काम करने के लिए।

मैंने 2 उत्पादों को शामिल किया है $productArray, एक सरल और दूसरा विन्यास योग्य । जाहिर है आप अधिक जोड़ सकते हैं और अगर विन्यास में आकार और रंग जैसे 2 विकल्प थे , तो आप विकल्प सरणी में अतिरिक्त जोड़ सकते हैं।


hii धन्यवाद मैं साधारण उत्पादों के लिए कस्टम विकल्पों के साथ काम करना चाहता
हूं

तो लाइन "unset ($ params ['विकल्प]]);" फिर सुनिश्चित करें कि उत्पाद में निर्दिष्ट उत्पाद विकल्प हैं
Shaughn

1

इसके अलावा कि कस्टम विकल्पों के साथ सरल उत्पादों का उपयोग करना बहुत ज्यादा नहीं है, मैगेंटो में "आकार" और "रंग" का उपयोग करने का तरीका नहीं है, मैं इस तरह से कार्ट में कस्टम विकल्पों के साथ उत्पादों को जोड़ने में कामयाब रहा:

/*
 * Assuming this is inside a method in a custom controller
 * that receives a $_POST
 */
$post = $this->getRequest()->getPost();

// load the product first
$product = Mage::getModel('catalog/product')->load($post['product_id']);
$options = $product->getOptions();

// this is the format for the $params-Array
$params = array(
    'product' => $product->getId(),
    'qty' => $post['qty'],
    'related_product' => null,
    'options' => array()
);
// loop through the options we get from $_POST
// and check if they are a product option, then add to $params
foreach( $post as $key => $value ) {
    if(isset($options[$key]) {
        $params['options'][$key] = $value; 
    }
}

// add the product and its options to the cart
$cart->addProduct($product, $params);

क्या यही आपका मतलब है? यदि आप एक से अधिक उत्पाद जोड़ना चाहते हैं, तो जिस उत्पाद को आप जोड़ना चाहते हैं, उसके लिए बस इस प्रक्रिया को दोहराएं। मुख्य कारक हमेशा product_id, मात्रा और विकल्पों के माध्यम से दिया जाता है $_POST


1

आप इस तरह से कार्ट कंट्रोलर को अधिलेखित करके कस्टम विकल्पों के साथ मूल उत्पाद जोड़ सकते हैं:

मैंने यहां CartController.php फ़ाइल रखी है: https://github.com/svlega/Multiple-Products-AddtoCart

        //Programatically Adding multiple products to cart
        $productArray = array(
            array(
                'product_id' => 7,
                'qty' => 2,
                'custom_options' => array(
                    'size' => 'XL'
                )
            ),
            array(
                'product_id' => 1,
                'qty' => 1,
                'custom_options' => array(
                    'color' => 'Red'
                )
            )   

        );

        // Prepare cart products
        foreach ($productArray as $params) {
            if (isset($params['product_id'])) {
                // Load product
                $product = Mage::getModel('catalog/product')->load($params['product_id']);

                if ($product->getId()) {
                    // If product is configurable and the param options were specified
                    if (isset($params['custom_options'])) {
                        // Get options                
                        $options = $product->getOptions();
                            foreach ($options as $option) {
                                /* @var $option Mage_Catalog_Model_Product_Option */                        
                                if ($option->getGroupByType() == Mage_Catalog_Model_Product_Option::OPTION_GROUP_SELECT) {                          

                                    $product_options[$option->getTitle()] = $option->getId();
                                    if(array_key_exists($option->getTitle(),$params['custom_options'])){
                                    $option_id =  $option->getId();                 
                                        echo '<br>Did'.$id = $option->getId().'Dlabe'.$option->getTitle();
                                    foreach ($option->getValues() as $value) {                          
                                        /* @var $value Mage_Catalog_Model_Product_Option_Value */                    
                                       if($value->getTitle()== $params['custom_options'][$option->getTitle()]){     
                                echo 'id'.$id = $value->getId().'labe'.$value->getTitle();
                                       $params['options'][$option->getId()]=$value->getId();
                                       }                                
                                    }
                                    }                          
                            }
                            }
                    }

                    try{
                    $cart = Mage::getModel('checkout/cart');
                    $cart->addProduct($product, $params);
                    $cart->save();
                    }catch(Exception $e) {
                    Mage::log($e->getMessage());
                    }

                }
            }
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.