jquery - Drupal व्यवहार




drupal-6 (4)

एक समान जवाब की तलाश में और यहां पहुंचे, अभी भी सुराग के बिना। आखिरकार यहां एक लेख से थोड़ा और स्पष्टीकरण (और उदाहरण) मिला: https://benmarshall.me/drupal-behaviors/

मैं मूल लेखक नहीं हूं, इसलिए मैं केवल कुछ ग्रंथों को उद्धृत कर सकता हूं:

ड्रूपल व्यवहार क्या हैं?

संक्षेप में, Drupal.behaviors jQuery.ready को लागू करने के लिए एक अधिक मॉड्यूलर और बेहतर तरीका है। JQuery.ready के विपरीत जो केवल एक बार चलाता है जब डोम मैनिपुलेशन के लिए तैयार होता है, ड्रूपल। व्यवहार पृष्ठ निष्पादन के दौरान कई बार चलाया जा सकता है। इससे भी बेहतर, जब भी दस्तावेज़ में नए डीओएम तत्व डाले जाते हैं तो वे दौड़ सकते हैं (यानी AJAX संचालित सामग्री)।

Drupal.behaviors भी एक मौजूदा व्यवहार को ओवरराइड या विस्तार भी कर सकते हैं। तो उदाहरण के लिए, यदि एक मॉड्यूल व्यवहार सभी लिंक पर बाउंस प्रभाव जोड़ता है, तो दूसरा मॉड्यूल उस व्यवहार को एक अलग बाउंस प्रभाव से बदल सकता है।

Drupal.behaviors (Drupal 7 में शुरू) का एक और जोड़ा बोनस, drupal_add_js (PHP) या Drupal.settings.modulename (JS) का उपयोग करने और व्यवहार को दूसरे पैरामीटर (पहला संदर्भ) के रूप में सेटिंग्स को पास करने की क्षमता है ।

  • ड्रोपल व्यवहार क्या हैं?
  • मॉड्यूल डेवलपर्स को यह किस तरह की सेवा परत प्रदान करता है?
  • यह किस तरह का रिश्ता jQuery.ready से jQuery.ready ?

ड्रूपल के पास पृष्ठ पर तत्व रखने के लिए जावास्क्रिप्ट कार्यक्षमता को जोड़ने के लिए एक मॉड्यूलर और बेहतर तरीका प्रदान करने के लिए 'व्यवहार' प्रणाली है। Drupal Behaviors आपको मौजूदा व्यवहार को ओवरराइड या विस्तार करने की अनुमति देता है। ये ड्रूपल व्यवहार घटनाओं को ट्रिगर किए जाते हैं जो पृष्ठ तत्वों से जुड़ने के लिए संलग्न होते हैं। जबकि व्यवहार विशिष्ट सामग्रियों से जुड़ा जा सकता है, कई व्यवहार भी संलग्न होते हैं और त्वरित रीमेक के लिए कई बार अबाधित किया जा सकता है।

Drupal.behaviors को तर्क संलग्न करके जावास्क्रिप्ट। यहां उस पृष्ठ से लिया गया एक उदाहरण दिया गया है:

Drupal.behaviors.exampleModule = {
  attach: function (context, settings) {
    $('.example', context).click(function () {
      $(this).next('ul').toggle('show');
    });
  }
}

;


यदि आपके जावास्क्रिप्ट को पेज लोड पर और AJAX अनुरोध के बाद निष्पादित करने की आवश्यकता है (आपके दस्तावेज़ / एचटीएमएल में कुछ नए तत्व जोड़े गए हैं) तो ड्रूपल व्यवहार का उपयोग किया जाता है।

Drupal.behaviors.yourmodulename = {
  attach: function (context, settings) {
     // Code to be run on page load, and
    // on ajax load added here
  }
};

yourmodulename: यह आपका नामस्थान है और अद्वितीय होना चाहिए। उदाहरण के लिए, यह आमतौर पर आपके मॉड्यूल का नाम होता है, लेकिन यह अनिवार्य नहीं है।

संदर्भ: यह वास्तव में वास्तव में वास्तव में अच्छा है, पृष्ठ लोड पर संदर्भ में संपूर्ण दस्तावेज़ होगा और AJAX अनुरोध के बाद सभी नए लोड किए गए तत्व होंगे। इस तरह आप एजेक्स के माध्यम से दूसरों के मुकाबले अलग-अलग सामग्री का इलाज कर सकते हैं।

सेटिंग्स: इसमें PHP के माध्यम से जावास्क्रिप्ट पर पास की गई जानकारी शामिल है, यह Drupal.settings के माध्यम से इसे एक्सेस करने के समान है।


लंबा संस्करण : Drupal.behaviors बस jQuery.ready के लिए एक प्रतिस्थापन नहीं है क्योंकि बाद वाला केवल एक बार चलता है (जब डोम हेरफेर के लिए तैयार होता है): पेज निष्पादन के दौरान व्यवहार को कई बार निकाल दिया जा सकता है और जब भी नए डोम तत्व डाले जाते हैं तो चलाया जा सकता है दस्तावेज़।

इसके अलावा, मॉड्यूल एक मौजूदा व्यवहार को ओवरराइड या विस्तारित कर सकता है (उदाहरण के लिए यदि एक मॉड्यूल में सभी लिंक पर बाउंस प्रभाव जोड़ने का व्यवहार होता है, तो दूसरा मॉड्यूल एक अलग बाउंस प्रभाव से व्यवहार को प्रतिस्थापित कर सकता है)।

लघु संस्करण : यह अधिक मॉड्यूलर है, हालांकि दस्तावेज़ीकरण में सुधार किया जा सकता है।

इसके अलावा, ड्रूपल 7 में शुरू, drupal_add_js (PHP) या Drupal.settings.modulename (जावास्क्रिप्ट) में परिभाषित सेटिंग्स को सीधे व्यवहार के लिए दूसरे पैरामीटर (संदर्भ वाला पहला संदर्भ) के रूप में पारित किया जाता है।

उदाहरण के लिए:

Drupal.behaviors.changeLinks = function(context, settings){
    if (!settings) settings = Drupal.settings.changeLinks;
    $("a", context).hover(function() {
        $(this).css('color', settings.color);
    });
};

और यदि आपकी स्क्रिप्ट (या कोई अन्य) नई नोड्स बनाता है, तो यह अभी भी नए नोड्स पर लागू व्यवहारों के बिना लागू हो सकता है कि अन्य मॉड्यूल Iinstalled क्यों हैं:

var newNodes = $('<a href="#">Hello</a> <a href="#">World</a>').appendTo('#someDiv');

Drupal.attachBehaviors(newNodes);






drupal-6