कैसे अलग-अलग मॉड्यूल में एक ही हुक के निष्पादन के आदेश को ड्रुपल तय करता है?


22

अगर दो मॉड्यूल A और B हैं और दोनों में समान user_login हुक है। इसलिए जब मैं A_user_login () और B_user_login () फ़ंक्शन से लॉग इन करता हूं, जिसे पहले कहा जाता है। और ड्रुपल इन दो फ़ंक्शन का निष्पादन आदेश कैसे तय करता है

जवाबों:


31

के क्रम में हुक कहा जाता है

  1. वजन, जिसे डेटाबेस में प्रति मॉड्यूल परिभाषित किया गया है {system.weight}। कम वज़न पहले कॉलिंग प्रक्रिया में आते हैं।
  2. वर्णानुक्रम, मॉड्यूल नाम से।

डिफ़ॉल्ट रूप से, मॉड्यूल को 0 का वजन सौंपा जाता है, इसलिए वर्णमाला क्रम में चलने वाले सिस्टम के लगभग सभी हुक। कुछ मॉड्यूल इसे अपने स्थापित हुक में समायोजित करेंगे ताकि वे module_invoke_allफ़ंक्शन में पहले या बाद में चलें ।

इन्हें भी देखें: मॉड्यूल वजन को समायोजित करना: जोखिम और चीजों को देखने के लिए क्या हैं?


3
डी 7 में ध्यान दें hook_module_implements_alter()
एंडी

11

डिफ़ॉल्ट रूप से एक मॉड्यूल वजन एक हुक_ * फ़ंक्शन को निष्पादित करने के लिए लाइन में अपनी जगह को परिभाषित करता है।

आप हुकिंग मॉड्यूल के हुकिंग ऑर्डर को हुक_मॉड्यूल_इम्प्लीमेंट्स_ल्टर से बदल सकते हैं । इस ब्लॉग ट्यूटोरियल के आगे पढ़ने में एक छोटा सा उदाहरण पाया जा सकता है ।

उस ब्लॉग पोस्ट से एक उदाहरण कार्यान्वयन है:

function mymodule_module_implements_alter(&$module_list, $context){
 if($context === "node_insert"){
 $temp = $module_list['mymodule'];
 // Removing the mymodule key/value
 unset($module_list['mymodule']);
 // Adding the mymodule key value as the last member in the list
 $module_list['mymodule'] = $temp;
 }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.