कस्टम विकल्प टेक्स्ट फ़ील्ड में परिवर्तन होने पर मूल्य की गणना करने के लिए Magento घटना


10

मैं दो कस्टम टेक्स्ट फ़ील्ड के साथ एक उत्पाद बनाने की कोशिश कर रहा हूं: लंबाई और चौड़ाई। जब उपयोगकर्ता लंबाई और चौड़ाई दोनों में टाइप करता है, तो मूल्य को कस्टम सूत्र के माध्यम से गणना करने की आवश्यकता होती है।

मैं एक पर्यवेक्षक को जोड़ने के लिए सही घटना खोजने की कोशिश कर रहा हूं - किसी को भी पता है कि क्या हो सकता है?

यहाँ मुझे पता है और कोशिश की है

1) उत्पाद दृश्य में कस्टम फ़ील्ड टेक्स्ट बॉक्स में एक ऑनकॉन्ग इवेंट है जो मुझे पता नहीं चला है कि पर्यवेक्षक घटना के माध्यम से अभी तक कैसे टैप करें - "opConfig.reloadPrice ()

2) अगर मैं ईवेंट सेल्स_क्वाटर_एडड_इटेम पर एक ऑब्जर्वर बनाता हूं, तो जब मैं कार्ट में जोड़ा जाता है, तो मैं सूत्र के माध्यम से कीमत बदल सकता हूं। इस पद्धति के साथ मुझे कार्ट में जोड़े जाने से पहले अभी भी इसे उत्पाद दृश्य में बदलने का एक तरीका चाहिए।

3) मैंने इवेंट कैटलॉग_प्रोडक्ट_गेट_फाइनल_प्राइस भी आजमाया है, लेकिन यह केवल उत्पाद पृष्ठ लोड होने पर ही लगता है, इसलिए उत्पाद की लंबाई या चौड़ाई जोड़ने के बाद, यह फिर से फायर नहीं करता है।

किसी भी विचार की बहुत प्रशंसा की जाएगी!


क्या फैबियन ने आपकी मदद की? यदि ऐसा है तो क्या आप इसे स्वीकार या स्पष्ट कर सकते हैं ताकि हम मदद कर सकें?
philwinkle

जवाबों:


2

मैं इस usecase के लिए इस्तेमाल किया sales_quote_collect_totals_before:

/**
 * Set prices
 *
 * @param Varien_Event_Observer $observer
 */
public function salesQuoteCollectTotalsBefore(Varien_Event_Observer $observer)
{
    /* @var $quote Mage_Sales_Model_Quote */
    $quote = $observer->getQuote();
    foreach ($quote->getAllItems() as $quoteItem) {
        if (is your product of choice) {
            /* @var $quoteItem Mage_Sales_Model_Quote_Item */
            $product = $quoteItem->getProduct();
            $price = whatever formula you want to use;
            $product->setPrice($price);
        }
    }
}

ग्राहक की ओर से, आप मूल्य को अद्यतन करने के लिए जेएस की कुछ पंक्तियों का उपयोग कर सकते हैं?


2

catalog_product_get_final_priceसही सर्वर साइड ईवेंट है, यह न केवल उत्पाद पृष्ठ लोड होने पर, बल्कि उत्पाद के कार्ट में जुड़ने पर भी निकाल दिया जाता है। इस मामले में आपके पास सभी चयनित कस्टम विकल्प उपलब्ध हैं:

$observer->getProduct()->getCustomOption($customOptionName);

(यह भी देखें: क्या कोई ऐसा तरीका है जहां उपयोगकर्ता कस्टम वांछित मूल्य को शून्य से अधिक सेट कर सकता है और किसी भी उत्पाद के लिए आगे बढ़ सकता है? )


उत्पाद पृष्ठ पर रहते हुए कीमत को फिर से समझना एक अन्य विषय है और जावास्क्रिप्ट की आवश्यकता है। reloadPriceहुक करने का सही कार्य है, मैं इसे इस तरह आगे बढ़ाऊंगा:

Product.prototype.reloadPrice = Product.prototype.reloadPrice.wrap(function(callOriginal) {
    if (should_be_calculated_based_on_length_and_with) {

        // copy the original reloadPrice function here and change how `price` is calculated

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