AJAX के साथ श्रेणी सूची में उत्पाद दृश्य लोड हो रहा है


14

इम AJAX का उपयोग कर के साथ श्रेणी सूची पृष्ठ में उत्पाद दृश्य ब्लॉक लोड करने का प्रयास Ajaxify । सब कुछ ठीक ही काम करता है कि विकल्प बॉक्स (चाइल्डहोम "कंटेनर 1") सही ढंग से लोड नहीं किया गया है। यह विकल्प नहीं दिखाता है।

किसी को भी इस के साथ अनुभव है, शायद कुछ इस तरह की कोशिश की? मैं नियंत्रक का उपयोग करके सक्रिय उत्पाद सेट करता हूं

$productId  = (int) $this->getRequest()->getParam('product_id');
Mage::helper('catalog/product')->initProduct($productId, $this);

लेआउट प्रदान करने से पहले।

मुझे लगता है कि इसका इस तथ्य से कुछ लेना-देना है कि कैटलॉग के दूसरे हिस्से में दृश्य में विकल्प जोड़े जाते हैं। xml

[...]
<PRODUCT_TYPE_configurable translate="label" module="catalog">
   <label>Catalog Product View (Configurable)</label>
   <reference name="product.info">
      <block type="catalog/product_view_type_configurable" name="product.info.configurable" as="product_type_data" template="catalog/product/view/type/default.phtml">
         <block type="core/text_list" name="product.info.configurable.extra" as="product_type_data_extra" translate="label">
            <label>Product Extra Info</label>
         </block>
      </block>
   </reference>
   <reference name="product.info.options.wrapper">
      <block type="catalog/product_view_type_configurable" name="product.info.options.configurable" as="options_configurable" before="-" template="catalog/product/view/type/options/configurable.phtml"/>
   </reference>
</PRODUCT_TYPE_configurable>
[...]

लेकिन मुझे यकीन नहीं है कि सटीक मुद्दा क्या है।

मुझे उम्मीद है कि कोई मुझे सही दिशा में ले जा सकता है।

सादर, सांडेर मंगल


1
सैंडर - मैंने अजाक्सिफ़ एक्सटेंशन में एक त्वरित ook लिया, और यह स्पष्ट नहीं है कि आप इसका उपयोग कैसे कर रहे हैं। क्या आप सटीक या जावास्क्रिप्ट (या PHP + जावास्क्रिप्ट) का उपयोग कर रहे हैं जिसे आप Ajaxify कहते हैं, और आपके पास नियंत्रक (यदि कोई हो) में जोड़ा गया कोड क्या है, या अनुरोध को संभालने के लिए Ajaxify लेआउट XML? मूल रूप से, हमें अपने अंत पर समस्या को फिर से बनाने के लिए पर्याप्त जानकारी दें, और हम आपको सही दिशा में जा सकते हैं।
एलन स्टॉर्म

मैंने अपने कोड को Ajaxify का उपयोग नहीं करने के लिए फिर से लिखने का फैसला किया है, बस इसे सरल रखने के लिए। यदि समस्या अभी भी मौजूद है तो प्रश्न के साथ एक्सटेंशन स्रोत को पोस्ट करें। यह शायद बहुत आसान है। अपनी टिप्पणी के लिए धन्यवाद
Sander Mangel

आप ajax कैटलॉग लोडिंग fme magento एक्सटेंशन का उपयोग कर सकते हैं, यह स्क्रॉल पर उत्पादों को लोड करेगा। आप एक बटन भी जोड़ सकते हैं जिस पर क्लिक करके अधिक उत्पाद लोड किए जाएंगे। fmeextensions.com/magento-ajax-catalog-pro.html

अरे @SanderMangel, क्या आपने एक्सटेंशन खोला है? Thx
joseantgv

जवाबों:


7

श्रेणी सूची पृष्ठ पर त्वरित दृश्य पॉपअप लाने का प्रयास करते समय हमारा अतीत में भी ऐसा ही मुद्दा रहा है। यहाँ कुछ समस्याएं हैं जिनका हमने सामना किया है: -

  • /js/varien/product.js& /js/varien/configurable.jsडिफ़ॉल्ट रूप से श्रेणी सूची पृष्ठ पर शामिल नहीं हैं जो कि विन्यास योग्य ड्रॉपडाउन उत्पन्न करने के लिए आवश्यक हैं। नीचे दिए गए इनलाइन JS की आवश्यकता है।

    <script type="text/javascript">
        var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
    </script>
  • हमारे पास एक और मुद्दा था जब प्रति पृष्ठ इनमें से एक से अधिक को शामिल करने की कोशिश की जा रही थी, हमें डुप्लिकेट आईडी के साथ समस्याएं मिल रही थीं, किसी भी मामले में यह अपने आप पर लागू नहीं हो सकता है लेकिन सुनिश्चित करें कि आपके पास कई हैं जब आप बंद होने पर उन्हें नष्ट कर देते हैं।

जिस तरह से हमने किया है वह एक रिक्त नियंत्रक फ़ाइल बनाकर है जो हमें अद्वितीय लेआउट हैंडल जैसे '' का उपयोग करने की अनुमति देता है। जिसे आप निम्नलिखित xml का उपयोग कर सकते हैं।

 <custom_catalog_product_ajax_view>
        <update handle="catalog_product_view" />
        <remove name="html_calendar" />
        <reference name="root">
                <action method="setTemplate"><template>custom/catalog/ajax/product/response.phtml</template></action>
        </reference>
        <reference name="product.info">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view.phtml</template></action>
                <action method="append">
                    <block>breadcrumbs</block>
                </action>
        </reference>
        <reference name="product.info.media">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view/media.phtml</template></action>
        </reference>
        <reference name="product.info.options.configurable">
                <action method="setTemplate"><template>custom/catalog/ajax/product/view/type/options/configurable.phtml</template></action>
        </reference>
</custom_catalog_product_ajax_view>

इसका मतलब है कि हम संबंधित ब्लॉकों को शामिल कर सकते हैं और नियमित उत्पाद पृष्ठ के कुछ पहलुओं को अनुकूलित कर सकते हैं।

हमने इसे आवश्यक जेएस फाइलों को शामिल करने के लिए हैंडल से भी जोड़ा।

<catalog_category_default>
    <update handle="required_for_catalog_ajax_product_view" />
</catalog_category_default>

<required_for_catalog_ajax_product_view>
        <reference name="head">
                <action method="addJs"><script>varien/product.js</script></action>
                <action method="addJs"><script>varien/configurable.js</script></action>
        </reference>
</required_for_catalog_ajax_product_view> 

हमारा response.phtml फ़ाइल भी ऐसा दिखता है

<?php echo Zend_Json::encode(array(
'success' => true,
'html' => $this->getChildHtml('content'),
'optionsPrice' => $this->getOptionsPrice(),
'spConfig' => $this->getSpConfig()
));

उम्मीद है कि जहाँ आपके गलत होने पर कुछ प्रकाश डालने में मदद मिल सकती है


हे ल्यूक, मुझे लगता है कि यह समाधान हो सकता है। मैं पूरा विस्तार लिख रहा हूं। यदि यह बीमार काम करता है तो इस पोस्ट को ओनर (और निश्चित रूप से एक्सटेंशन को खोलता है) के रूप में चिह्नित करें। धन्यवाद!
Sander Mangel

1

समस्या ist, कि विकल्पों को जावास्क्रिप्ट के माध्यम से जोड़ा जाता है न कि कैटलॉग / उत्पाद / दृश्य / प्रकार / विकल्प / विन्यास योग्य HTML में HTML के रूप में:

<script type="text/javascript">
    var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
</script>

आपकी Ajax स्क्रिप्ट बस HTML को प्रतिस्थापित करने के लिए लगती है, लेकिन इसमें JS को निष्पादित नहीं करता है। आपको उस हिस्से को मैन्युअल रूप से निष्पादित करना होगा, लेकिन ऐसा करने के कई तरीके हैं:

  • preg_match स्क्रिप्ट टैग्स के अंदर सब कुछ और eval के माध्यम से कॉल करें
  • HTML और जावास्क्रिप्ट भाग में अपने आउटपुट को विभाजित करें, ताकि आप दोनों को व्यक्तिगत रूप से प्राप्त कर सकें

हे तोबियास, अवेंजर के लिए धन्यवाद। आप जावास्क्रिप्ट को निष्पादित नहीं किए जाने के बारे में सही हैं लेकिन विकल्पों के लिए अभी भी कुछ html सम्मिलित किए जाने चाहिए। Div # उत्पाद-विकल्प-आवरण पूरी तरह से खाली है।
Sander Mangel

0

मैं केवल यहाँ प्रदान किए गए स्वीकृत उत्तर के साथ ही प्राप्त करने में सक्षम था। ट्विटर बूटस्ट्रैप मोडल के साथ काम करने के लिए चीजों को प्राप्त करने के लिए मुझे विन्यास योग्य उत्पाद को लोड करने के लिए प्रोटोटाइप का उपयोग करने और इसे दिए गए पृष्ठ में स्क्रिप्ट चलाने के लिए सेट करने की आवश्यकता है:

new Ajax.Updater(target, product, {
    parameters: { evalJS: true},
    ...

इसके अलावा, जब मैंने अपना मोडल बंद किया तो मुझे पूरी तरह से सामग्री को साफ करने की आवश्यकता थी:

$(document.body).on('hidden.bs.modal', function () {

    delete spConfig;
    $('#myModal').html('<div class="modal-dialog">...</div>');
    ...

मैंने यहां पूर्ण समाधान प्रदान नहीं किया है, जैसा कि अब मैंने पाया है कि मुझे क्या चल रहा है, मुझे अपने नियंत्रक को फिर से तैयार करने और अपने उत्पादों के लिए टेम्पलेट को पूरा करने की आवश्यकता है ताकि यह ट्विटर बूटस्ट्रैप मोडल के साथ काम करने के लिए एक स्वच्छ हेडर आदि लौटा सके। हालांकि, निम्नलिखित सलाह के साथ अपने उत्पाद को लोड करना और जावास्क्रिप्ट को चलाना आसान होना चाहिए जो इसके साथ आता है ताकि इसकी सामग्री सही ढंग से काम कर सके। आपके श्रेणी पृष्ठ में product.js आदि जोड़ने की कोई आवश्यकता नहीं है।

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