Magento के लेआउट XML में लोकल फॉलबैक के साथ Google CDN jQuery


18

मैंने Google सीडीएन से jQuery को शामिल करने के लिए निम्नलिखित कार्य किया है:

<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
                </text>
            </action>
        </block>
    </reference>
</default>

हालाँकि जब मैं इसे एक स्थानीय कमबैक के साथ लागू करना चाहता हूं, जो काफी अच्छा काम करता है, तो मैं इसे अपने .phtml के साथ जोड़कर हवा देता हूं:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
if (!window.jQuery) {
    document.write('<script src="/path/to/your/jquery"><\/script>');
}
</script>
  • वहाँ के रूप में मैं कर रहा हूँ के रूप में नोड में स्थानीय परिवर्तन करने की तुलना में स्थानीय .xml में ऐसा करने का एक और अधिक सुंदर तरीका है ?<text>jQuery.noConflict

संपादित करें:

प्रश्न के अन्य भाग पर ध्यान आकर्षित करने के लिए - क्या ऐसे सामुदायिक मॉड्यूल हैं जिनमें आपके लिए jQuery शामिल है? यदि उनके पास एक स्थानीय jQuery है, तो यह ठीक है - यदि वे Google CDN का उपयोग करते हैं - और भी बेहतर। अगर यह वहाँ नहीं है, तो मैं एक बनाना पसंद करूंगा।

  • क्या कोई गो-टू एक्सटेंशन है जो इसे मेरे बिना संभालती है इसे खुद बूटस्ट्रैप करना है?

1
JQuery (अर्ध-स्व-लिंक) को शामिल करने के लिए एक बहुत ही सरल सामुदायिक मॉड्यूल: github.com/netz98/N98_BaseJQuery - इसमें केवल एक स्थानीय JQuery शामिल है। सीडीएन के माध्यम से विचार अच्छा है, पुल अनुरोधों के माध्यम से सुधार करने के लिए स्वतंत्र महसूस करें :-)
एलेक्स

जिज्ञासा से बाहर: क्या CDN अविश्वसनीय है या गिरावट की आवश्यकता क्यों है? आपके पास किस तरह का व्यावहारिक अनुभव है?
एलेक्स

2
कुछ देश (ईरान, सीरिया, एट अल), कई बार, Google और Google CDN को अवरुद्ध कर सकते हैं। ये मेरा पर्सनल तजर्बा रहा है। मैंने रिस्पांस टाइमआउट जैसी चीजें भी देखी हैं जो इस तरह से कम हो जाती हैं।
दार्शनिक

समझना। यदि आप मॉड्यूल के समाधान में योगदान कर सकते हैं तो यह अच्छा होगा।
एलेक्स

महान खोज - जब कुछ उपयुक्त की तलाश में मैंने N98 मॉड्यूल नहीं देखा। मुझे लगता है कि मैं वहां योगदान दूंगा। धन्यवाद! हालांकि यह <text>विधि के साथ होना चाहिए जैसा कि ऊपर वर्णित है ... निश्चित नहीं है कि अगर यह एक स्वीकार्य समाधान है। N98 मॉड्यूल का उपयोग करता है एक अलग js बुला noConflict, हालांकि, मुझे लगता है के लिए फ़ाइल में शामिल हैं ...
philwinkle

जवाबों:


18

दिन के अंत में, लेआउट एक्सएमएल के माध्यम से ऐसा करना बेहतर होता है। मैंने पाया है कि गूगल क्लोजर कंपाइलर के साथ एक सिंगल-लाइन स्टेटमेंट में स्थानीय फॉलबैक विकल्प को सबसे अच्छा लागू किया गया है।

<default>
    <reference name="head">
        <block type="core/text" name="google.cdn.jquery">
            <action method="setText">
                <text><![CDATA[<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><script>window.jQuery||document.write('<script src="/path/to/your/jquery.js">\x3c/script>');</script><script>jQuery.noConflict();</script>]]></text>
            </action>
        </block>
    </reference>
</default>

यह काम नहीं करता है
fmsthird

2

मैंने एक लंबे समय तक हेड के कोड के माध्यम से देखा। phtml फ़ाइलों और फ़ाइलों और ब्लॉकों के आसपास लेकिन कोड को <head> में कोड इंजेक्ट करने के लिए टेम्पलेट को बदले बिना कोई रास्ता नहीं है।

मैं एक बेवकूफ, आप पहले से ही सब कुछ लिखा था और मैं कई बार निरीक्षण किया <?php echo $this->getChildHtml() ?>में head.phtml: - /

इसलिए मैं इसके लिए सिर्फ एक core/templateब्लॉक और एक टेम्पलेट का उपयोग करूंगा । यह पढ़ने में आसान, समझने में आसान और प्रबंधन करने में आसान है।


जिस समस्या को मैं दूर करने की कोशिश कर रहा हूं, वह है कि इस ब्लॉक को कुछ पेज प्रकारों से जोड़ना / हटाना और बिना किसी जबरदस्ती के हर बार phtml को शामिल करना। अभी एक स्थैतिक ब्लॉक पर्याप्त है, लेकिन केवल इसलिए कि यह हर जगह से उपलब्ध है ...
'21

मैं यहाँ समस्या नहीं देख रहा हूँ। आप इसे <डिफ़ॉल्ट> में जोड़ते हैं और इसे हटाते हैं, हर जगह जहां आप इसे नहीं चाहते हैं, हर दूसरे ब्लॉक की तरह। आप core/text_listअन्य पृष्ठों पर इसे हटाने के लिए (और यदि यह एक से अधिक फ़ाइल चाहते हैं) जोड़ने के बारे में सोच सकते हैं ।
फैबियन ब्लेसश्मिड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.