अन्य उत्तर महान, सटीक, विस्तृत हैं, लेकिन मुझे यकीन नहीं है कि वे "सरल शब्द" हैं जो उस अवधारणा की नंगे हड्डियों को समझाते हैं जो पूछने वाले की तलाश थी।
मुझे लगता है कि हुक एक बिंदु के रूप में है जहां कोड रुकता है और चिल्लाता है " किसी और को यहां जोड़ने के लिए कुछ भी मिला? "। किसी भी मॉड्यूल में एक फ़ंक्शन हो सकता है जो इसका उत्तर देता है, और कोड में उस बिंदु पर इसे पारित उचित डेटा के साथ चालू हो जाता है।
एक अच्छा सीधा उदाहरण hook_node_delete () है । कोई भी मॉड्यूल हर बार एक नोड को हटाने के लिए चीजों को बनाने के लिए इसका उपयोग कर सकता है। डॉक्स आपको बताता है कि यह हुक मॉड्यूल को उस हटाई गई नोड की वस्तु के साथ काम करने के लिए पास करता है, और अन्य उपयोगी जानकारी को रेखांकित करता है जैसे कि इसे कहा जाता है की सटीक समय के बारे में (जैसे कि यह नोड डेटा वास्तव में डेटाबेस से हटा दिया गया है) , और जहां द्रुपल के कोड में हुक कहा जाता है (जो एक से अधिक स्थानों पर हो सकता है)।
आप यह पता लगा सकते हैं कि हुक क्या है और यह पता लगाएं कि ड्रुपल आपी में "हुक_" से शुरू होने वाली चीजों की खोज करके उन्हें क्या डेटा दिया गया है ।
हुक एक नाम सम्मेलनों द्वारा काम करते हैं: hook_node_delete
हमारे उदाहरण के रूप में उपयोग करते हुए , जब नोड विलोपन प्रक्रिया उस बिंदु तक पहुंचती है जहां हुक को बुलाया जाता है, प्रत्येक मॉड्यूल के लिए एक फ़ंक्शन के साथ इस तरह से [modulename]_node_delete()
जहां हुक के नाम में हुक को मॉड्यूल के नाम से प्रतिस्थापित किया जाता है (जैसे my_amazing_module_node_delete()
), उन कार्यों को कहा जाता है।
क्यों? इसलिए कोई भी मॉड्यूल इन प्रमुख बिंदुओं पर कुछ भी कर सकता है: उदाहरण के लिए आप हटाए गए नोड को देख सकते हैं और चीजें कर सकते हैं यदि यह एक निश्चित स्थिति से मिलता है (जैसे, एक व्यवस्थापक को ईमेल करें, या कुछ लंबी प्रक्रिया लॉन्च करें)।
कुछ हुक आपको संसाधित होने से ठीक पहले उत्पन्न हुई चीजों को बदलने देते हैं। उदाहरण के लिए, हुक_मेनू_अल्टर () आपको वर्तमान मेनू आइटम से गुजरता है जो सिस्टम ने उत्पन्न किया है। कोई भी मॉड्यूल किसी फ़ंक्शन को__odulename_menu_alter () को परिभाषित कर सकता है और उन्हें देख सकता है, वैकल्पिक रूप से उन्हें बदल सकता है (कुछ हटाएं, कुछ जोड़ें, उन्हें सॉर्ट करें ...), और नए परिवर्तित मेनू को वापस पास करें।
यह सरल है, वास्तव में शक्तिशाली है और इस बात के दिल में है कि ड्रुपल एक मॉड्यूलर प्रणाली के रूप में कैसे काम करता है। हुक के कार्यान्वयन अधिकांश Drupal मॉड्यूल के दिल में हैं।
ड्रुपल मॉड्यूल के कोड के माध्यम से देखने पर, आप हुक से आने वाले कार्यों को देख सकते हैं (उन कार्यों के विपरीत जिन्हें केवल मॉड्यूल कोड के भीतर से कहा जाता है), क्योंकि ड्रुपल समुदाय एक अधिवेशन लागू करता है जिसके तहत हुक का प्रत्येक कार्यान्वयन होता है इसके सामने इस तरह से टिप्पणी करें ("इम्प्लीमेंट्स हुक _..." बिट पर ध्यान दें):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
कुछ मॉड्यूल जो एपीआई के रूप में कार्य करते हैं वे अपने स्वयं के हुक को परिभाषित करते हैं। उदाहरण के लिए, व्यू कई हुक को परिभाषित करता है जो आपको एक दृश्य बनाने या प्रदर्शित करने की प्रक्रिया में विभिन्न बिंदुओं पर डेटा को जोड़ने, पढ़ने और संपादित करने की अनुमति देता है। आप दो स्थानों से कस्टम मॉड्यूल में बनाए गए हुक के बारे में जानकारी प्राप्त कर सकते हैं (यह मानते हुए कि मॉड्यूल कन्वेंशन आदि का अनुसरण करता है) आदि।
modulename.api.php
मॉड्यूल फ़ोल्डर में फ़ाइल में कोड और टिप्पणियां
- drupalcontrib.org - उदाहरण के लिए, यहाँ D7 मॉड्यूल की उनकी सूची है , जिनके बारे में उन्हें जानकारी है, और यहाँ व्यूज़ का उनका पृष्ठ है
बूटस्ट्रैपिंग है, जैसा कि दूसरों ने समझाया, मूल रूप से बूटिंग - मैं अन्य अच्छे स्पष्ट स्पष्टीकरण की नकल नहीं करूंगा।