jquery Drupal व्यवहार




drupal-6 (5)

यदि आपके जावास्क्रिप्ट को पेज लोड पर और 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 के माध्यम से इसे एक्सेस करने के समान है।

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

मुख्य चीजों के ऊपर उल्लिखित उत्तरों के साथ-साथ आप php से जावास्क्रिप्ट तक डेटा पास कर सकते हैं जो निम्नानुसार है

"Drupal.settings" के साथ PHP से जावास्क्रिप्ट में मानों को पास करना

Drupal_add_js () फ़ंक्शन का उपयोग करके Drupal.settings के साथ आप आगे के अंत में जावास्क्रिप्ट में उपलब्ध PHP से चर को आसानी से बना सकते हैं।

<?php
  drupal_add_js(array('myModule' => array('key' => 'value')), 'setting');
?>

या

<?php
$element['#attached']['js'][] = array(
  'type' => 'setting',
  'data' => array('myModule' => array('key' => 'value')),
);
?>

यह जावास्क्रिप्ट में उपलब्ध होगा:

  if (Drupal.settings.myModule.key === 'value') {
    alert('Got it!');
  }

लंबा संस्करण : 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.behaviors आर्किटेक्चर पहले से ही jQuery में कार्यक्षमता डुप्लिकेट करता है

इसके अलावा, इस लेखन के अनुसार, ड्रूपल के बाहर ड्रूपल.बिवियों के लिए कोई दस्तावेज़ीकरण या केस स्टडी नहीं दिखती है ; और ड्रूपल के भीतर प्रलेखन (जैसा कि ऊपर बताया गया है) सुधार से काफी लाभ उठा सकता है। इस लेखन के अनुसार, ऐसा प्रतीत होता है कि प्राथमिक विस्तृत दस्तावेज केवल शुल्क के लिए प्रतिबंधित है।

इसका मतलब है कि आप प्रदर्शन विकृति, विसंगतियां, और अप्रत्याशित परिणाम देख सकते हैं जो मानक jQuery के अनुरूप नहीं हैं जो Drupal.behaviors पारिस्थितिक तंत्र के लिए स्थानिक हैं।

मूल jQuery कार्यक्षमता

Drupal.behaviors के विपरीत, मानक jQuery एपीआई की अंतर्निहित कार्यक्षमता व्यापक रूप से इन-लाइन प्रदर्शनों और उदाहरणों सहित दस्तावेज़ीकृत है । इसके अलावा, jsfiddle जैसे साइटों पर कई लाइव उदाहरण मुफ्त में उपलब्ध हैं।

देखने में दिए गए लिंक भी अनुभाग में डाले गए नए डीओएम तत्वों को संभालने के लिए प्रासंगिक jQuery एपीआई कॉल का आकलन करते हैं।

यह भी देखें


एक समान जवाब की तलाश में और यहां पहुंचे, अभी भी सुराग के बिना। आखिरकार यहां एक लेख से थोड़ा और स्पष्टीकरण (और उदाहरण) मिला: 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) का उपयोग करने और व्यवहार को दूसरे पैरामीटर (पहला संदर्भ) के रूप में सेटिंग्स को पास करने की क्षमता है ।





drupal-6