जवाबों:
Drupal 7 द्वारा प्रयुक्त जावास्क्रिप्ट कोड निम्नलिखित है:
Drupal.attachBehaviors = function (context, settings) {
context = context || document;
settings = settings || Drupal.settings;
// Execute all of them.
$.each(Drupal.behaviors, function () {
if ($.isFunction(this.attach)) {
this.attach(context, settings);
}
});
};
Drupal 6 समान कोड का उपयोग करता है:
Drupal.attachBehaviors = function(context) {
context = context || document;
if (Drupal.jsEnabled) {
// Execute all of them.
jQuery.each(Drupal.behaviors, function() {
this(context);
});
}
};
यदि जावास्क्रिप्ट गारंटी देता है कि ऑब्जेक्ट / सरणी गुण हमेशा उसी क्रम में ट्रेस किए जाते हैं जिस क्रम में उन्हें जोड़ा जाता है, तो मानों को jQuery.each()
फ़ंक्शन से पास किया जाएगा जिसका उपयोग इसके दूसरे पैरामीटर के रूप में किया जाता है उसी क्रम में वे पहले पैरामीटर के रूप में पारित सरणी में डाले जाते हैं।
इसका अर्थ यह होगा कि पहले डाला गया व्यवहार Drupal.behaviors
पहले निष्पादित किया जाता है।
इस मामले में, आपके मॉड्यूल द्वारा परिभाषित व्यवहार को निष्पादित करने की अनुमति देने के लिए पहले आप इसके लिए हल्के वजन का उपयोग कर सकते हैं। यदि आप चाहते हैं कि उन्हें अन्य लोगों से पहले निष्पादित किया जाए, तो मॉड्यूल वजन को -50 पर सेट किया जाना चाहिए; अन्य मूल्य भी काम कर सकते हैं। यदि आप Drupal 7, drupal_add_js () का उपयोग कर रहे हैंजावास्क्रिप्ट कोड के लिए एक वजन संबद्ध करने की अनुमति देता है; एक हल्के वजन वाला जावास्क्रिप्ट कोड सबसे पहले HTML आउटपुट में दिखाई देता है। द्रुपाल 6, विचार के साथ यह संभव नहीं है।
जावास्क्रिप्ट इस बात की गारंटी नहीं देता है कि संपत्तियों को उसी क्रम में रखा गया है जिस क्रम में उन्हें जोड़ा गया है। इसका मतलब है कि विभिन्न जावास्क्रिप्ट कार्यान्वयन एक अलग आदेश का उपयोग करके समान गुण प्रस्तुत करेंगे; इसका मतलब यह भी है कि एक ही क्रम एक ही ब्राउज़र के विभिन्न संस्करणों में बदल सकता है।
select name, weight from system where type = 'module' order by weight ASC, name
Drupal.behaviors
; जैसा कि मैंने बताया $.each(Drupal.behaviors)
कि वस्तुओं को उसी क्रम में सूचीबद्ध किया गया है, जो उनके पहचानकर्ता पर आधारित नहीं है।
व्यवहार भार मॉड्यूल का उपयोग करें ।
(कृपया इसे किसी उत्पादन साइट पर उपयोग करने से पहले कुछ परीक्षण दें)
मॉड्यूल व्यवहार को भार संलग्न करने की अनुमति देता है, और फिर यह drupal.attachBehaviors
एक कस्टम कार्यान्वयन के साथ अपहरण / बदल देता है , जो भार का सम्मान करता है।
इसके बजाय मॉड्यूल वजन क्यों नहीं, जैसा कि अन्य उत्तर में सुझाया गया है?
देखें
कि जब किसी वस्तु को लूपिंग के माध्यम से देखा जाता है, तो उसे किसी जावास्क्रिप्ट ऑब्जेक्ट में फ़ील्ड का क्रम कहा जाता है? और
तत्व क्रम - के लिए (… में…) जावास्क्रिप्ट में लूप ।
द्रुपाल 6 के लिए -
एक सरल समाधान, अगर यह पोर्टेबल होने की आवश्यकता नहीं है, तो जेएस को आप थीम टेम्पलेट.फैप फ़ाइल में अंतिम रूप से चलाना चाहते हैं। थीम drupal_add_js कॉल हमेशा मॉड्यूल के बाद कहा जाता है।
अगर यह ड्रुपल 6 में "सबसे साफ" समाधान पोर्टेबल होने की आवश्यकता है, तो एक नया मॉड्यूल जोड़ना है जिसका php के साथ आपके मॉड्यूल से अलग वजन है। आप एक ही फ़ोल्डर में दो मॉड्यूल भी रख सकते हैं, पहले मॉड्यूल को पहले पर निर्भर करते हैं, और इंस्टॉल / बैक हुक में वजन समायोजित करते हैं। जिनमें से कोई भी आवश्यक नहीं है, बस स्थापना को आसान बनाता है।