Drupal पर मॉड्यूल बनाना — त्वरित प्रारंभ
आइए api.drupal.org से शुरू करें। उस पेज को खोलें जहाँ hook_node_presave() हुक का वर्णन है — यह हुक किसी नोड को जोड़ने से पहले सक्रिय होता है।
http://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_validate/7
हुक्स हमें Drupal की प्रक्रिया में अपना कोड सम्मिलित करने की अनुमति देते हैं — उदाहरण के लिए, हम इनसे डेटा की वैधता जाँच सकते हैं, फ़ील्ड जोड़ सकते हैं, फॉर्म तत्व बना सकते हैं आदि।
अब हम अपना मॉड्यूल sites/all/modules फ़ोल्डर में जोड़ते हैं:
sites/all/modules/custom/ sites/all/modules/custom/custom.info sites/all/modules/custom/custom.module
custom.info फ़ाइल में निम्नलिखित लिखें:
name = Custom description = Custom core = 7.x
custom.module फ़ाइल में हम यह जाँच करेंगे कि कंटेंट के बॉडी फ़ील्ड में कुछ न कुछ लिखा गया है या नहीं। यदि फ़ील्ड खाली है, तो हम एक त्रुटि संदेश दिखाएँगे (हालाँकि Drupal की एडमिन पैनल में इसे आवश्यक फ़ील्ड के रूप में भी सेट किया जा सकता है, लेकिन यहाँ हम इसे प्रोग्रामmatically करेंगे):
custom.module
<?php
function custom_node_validate($node){
if(empty($node->body['und'][0]['value'])){
form_set_error('node-body', 'Body is empty'); // त्रुटि संदेश दिखाएँ और नोड को सहेजने से रोकें
}
}
हमारे मामले में, साइट पर केवल एक ही भाषा उपयोग की जा रही है — und (undefined, यानी "अनिर्धारित")। इसलिए हम बॉडी फ़ील्ड के पहले textarea की जाँच कर रहे हैं (क्योंकि किसी फ़ील्ड के लिए कई टेक्स्ट क्षेत्र जोड़े जा सकते हैं)।
आप devel मॉड्यूल और उसकी dsm() फ़ंक्शन का उपयोग कर सकते हैं ताकि आवश्यक ऑब्जेक्ट या ऐरे की सामग्री को स्क्रीन पर प्रदर्शित किया जा सके:
<?php
function custom_node_view($node){
dsm($node);
}