बेहतर तरीका यह है कि इसे hook_enable () के अंदर किया जाए ; जिस समय हुक लगाया जाता है, मॉड्यूल पहले से ही स्थापित होता है, और इसके डेटाबेस का स्कीमा Drupal, और के लिए उपलब्ध होता है drupal_write_record()
। चूंकि हुक को एक मॉड्यूल सक्षम किया जाता है, और हर बार जब मॉड्यूल स्थापित किया जाता है, तो हुक लागू होता है, हुक कार्यान्वयन की जांच करनी चाहिए कि क्या यह उन डेटाबेस पंक्तियों को पहले से ही नहीं जोड़ा था (उदाहरण के लिए, यह एक ब्यूपियन मान युक्त एक ड्रुपल चर का उपयोग करना चाहिए) ।
hook_enable()
एक समान उद्देश्य के लिए उपयोग किए जाने वाले मॉड्यूल के उदाहरण के रूप में , आप forum_enable () , या php_enable () (जो "PHP कोड" इनपुट प्रारूप जोड़ता है ) की जांच कर सकते हैं।
function php_enable() {
$format_exists = (bool) db_query_range('SELECT 1 FROM {filter_format} WHERE name = :name', 0, 1, array(':name' => 'PHP code'))->fetchField();
// Add a PHP code text format, if it does not exist. Do this only for the
// first install (or if the format has been manually deleted) as there is no
// reliable method to identify the format in an uninstall hook or in
// subsequent clean installs.
if (!$format_exists) {
$php_format = array(
'format' => 'php_code',
'name' => 'PHP code',
// 'Plain text' format is installed with a weight of 10 by default. Use a
// higher weight here to ensure that this format will not be the default
// format for anyone.
'weight' => 11,
'filters' => array(
// Enable the PHP evaluator filter.
'php_code' => array(
'weight' => 0,
'status' => 1,
),
),
);
$php_format = (object) $php_format;
filter_format_save($php_format);
drupal_set_message(t('A <a href="@php-code">PHP code</a> text format has been created.', array('@php-code' => url('admin/config/content/formats/' . $php_format->format))));
}
}
जैसा कि उन हुक कार्यान्वयनों से दिखाया गया है, कोड को हर बार हुक निष्पादित होने की आवश्यकता हो सकती है; यह कोड को केवल एक बार निष्पादित करने की आवश्यकता हो सकती है, क्योंकि मामले में डेटाबेस में जोड़े गए डिफ़ॉल्ट मान को उपयोगकर्ता से नहीं बदला जा सकता है, जिनके पास उन मूल्यों को बदलने / हटाने के लिए उपयोगकर्ता इंटरफ़ेस नहीं है।