Magento स्टोर में हेडर के होलपंचिंग


10

मैंने मैगनेटो में हेडर के छिद्रण को लागू किया है, और भले ही मुझे यह प्रति ग्राहक के आधार पर काम कर रहा हो, लेकिन मुझे इसे अलग-अलग कार्ट आइटम की गिनती पर भी काम करके इस एक स्तर को गहराई तक ले जाने की क्षमता की आवश्यकता है।

यहाँ मेरा कोड है।

    class AD_PageCache_Model_Container_Header extends Enterprise_PageCache_Model_Container_Abstract {

    protected function _getIdentifier() {
        return $this->_getCookieValue(Enterprise_PageCache_Model_Cookie::COOKIE_CUSTOMER, '');
    }

    // public function getCacheKeyInfo() {
    //  $info = parent::getCacheKeyInfo();
    //  die('boo');
    //  $info['cart_count'] = Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();

    //  return $info;
    // }

    protected function _getCacheId() {
        //return 'CONTAINER_HEADER_' . md5($this->_placeholder->getAttribute('cache_id') . $this->_placeholder->getAttribute('cart_count') ) . '_' . $this->_getIdentifier();
        return 'CONTAINER_HEADER_' . md5( $this->_placeholder->getAttribute('cache_id') . $this->_getIdentifier() );
    }

    protected function _renderBlock() {
        $blockClass = $this->_placeholder->getAttribute('block');
        $template = $this->_placeholder->getAttribute('template');

        $block = new $blockClass;
        $block->setTemplate($template);
        return $block->toHtml();
    }

}

मैगेंटो पर थ्रेडपैकिंग थ्रेड्स से जो कुछ भी मैं पढ़ रहा हूं, उससे मेरी समझ यह है कि एफपीसी कैश रिक्वेस्ट करने के दौरान मैज ऐप को इनिशियलाइज़ नहीं किया जाता है, इसलिए मूल रूप से प्लेसहोल्डर विशेषता जोड़ने का तरीका काम नहीं कर सकता है, क्योंकि

Mage::helper( 'checkout/cart' )->getCart()->getItemsCount();

काम नहीं करेगा, है ना?

और फिर भी यह कैसे है कि यह होना चाहिए, लेकिन यह बिल्कुल भी नहीं लगता था, जैसे मैंने die()वहां कॉल किया, लेकिन कुछ भी नहीं हुआ।

तो मुझे क्या याद आ रहा है? और मैं कार्ट आइटम की गणना कैसे प्राप्त कर सकता हूं ताकि इसका उपयोग कैश आईडी बनाने के लिए किया जा सके?

प्रगति: मैंने पाया

Enterprise_PageCache_Model_Cookie::COOKIE_CART

लेकिन यह केवल कार्ट अपडेशन पर एक बार बदलता है। उसके बाद वही रहता है। यह अजीब है, यह समाधान की तरह लगता है लेकिन इसका व्यवहार अन्यथा कहता है।

मुझे सत्र में कार्ट आइटम की गणना नहीं मिली। इसलिए वर्तमान में मुझे ऐसा करने का एकमात्र तरीका सत्र में गाड़ी की मात्रा को बचाने के लिए होगा जब भी यह अपडेट होता है और फिर उस में इसका उपयोग होता है _getIdentifier()

मैंने पाया कि पर्यवेक्षक गाड़ी के लिए असंगत हैं। इसके अलावा, अपडेशन घटनाओं को भेज दिया जाता है लेकिन हटाने के लिए, यह नहीं है। इसलिए मुझे लगता है कि मैं अपने पर्यवेक्षक को किसी भी तरह उद्धरण के मूल्य अद्यतन करने के लिए जोड़ सकता हूं, अगर वह पर्यवेक्षकों के अनुरूप है?

इसके अलावा, मैंने कार्ट (उद्धरण) परिवर्तन पर पूर्ण पृष्ठ कैश अमान्य पढ़ा है लेकिन itt हैंडल का उपयोग कर रहा है

Enterprise_PageCache_Model_Cookie::COOKIE_CART

जो मेरे मामले में अच्छी तरह से काम नहीं करता है, हालांकि मुझे लगता है कि समस्या इसके अंदर है। क्या कैसे? मुझे यकीन नहीं है।

ईई का वर्तमान संस्करण जो हमारे पास चल रहा है उसमें भी उन्नत फ़ोल्डर नहीं है Model/Container। मै इस्तेमाल कर रहा हूँEE 1.10.1.1

कोई सुझाव?


यकीन नहीं है, लेकिन मुझे लगता है कि यह सवाल स्टैक ओवरफ्लो से संबंधित है, लेकिन इस साइट से नहीं ...
सर्गेई गुक

2
गैर पारंपरिक अर्थों में यहाँ होलपंचिंग का उपयोग किया जाता है, क्या आप उस विशेषता को समझा सकते हैं जिसे आप शब्दजाल का उपयोग किए बिना लागू करने की कोशिश कर रहे हैं?
राल्फ टाइस

1
क्‍यों न ग्राहकों को कार्ट आईडी से जोड़ा _getIdentifierजाए, क्‍योंकि ग्राहक कार्ट, या यहां तक ​​कि उनकी कार्ट में आइटमों की संख्‍या के लिए ब्लॉक अद्वितीय है?
B00MER

@SergeiGuk खैर यह Magento से संबंधित है
j0k

@ राल्फिस मैं हेडर में एक कार्ट वैल्यू इंडिकेटर को लागू करने की कोशिश कर रहा हूं जो उपयोगकर्ता को दिखाता है कि उनके कार्ट में कितने आइटम हैं। चूंकि यह मूल्य प्रति उपयोगकर्ता अलग है, मैं नहीं चाहता कि इसे कैश किया जाए।
नीरव शेठ

जवाबों:


3

उपयोग करना Enterprise_PageCache_Model_Cookie::COOKIE_CARTजाने का सही तरीका है, लेकिन आपको कुछ बदलाव करने की आवश्यकता हो सकती है।

Enterprise_PageCache_Model_Observer::registerQuoteChangeप्रत्येक उद्धरण सेव (आइटम नंबर परिवर्तन शामिल) पर कहा जाता है और इसे संदर्भ में भी कहा जाता है Mage::app()ताकि आप सभी सत्र डेटा तक पहुंच सकें। इस पर्यवेक्षक को अधिलेखित करें और $this->_getCookie()->setObscureजब भी आपको आवश्यकता हो , तो मूल्य में अधिक डेटा जोड़ें ।


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