मैं इसके लिए hook_nodeapi
का उपयोग करने के खिलाफ सलाह दूंगा। सीएसएस और जावास्क्रिप्ट जोड़ना लेआउट से संबंधित है इसलिए hook_nodeapi
इसके लिए जगह नहीं है: थीमिंग का उपयोग करें। इस तरह, आप उन फ़ाइलों को ओवरराइड कर सकते हैं जब आप एक नई थीम विकसित करने जा रहे हैं। ऐसा करना कि नोडापी दृष्टिकोण के साथ थोड़ा कठिन होगा (आपको फ़ाइलों के लिए जेएस/सीएसएस सूची खोजनी होगी, उन्हें हटा दें और उन्हें स्वयं से बदलें)।
वैसे भी: आपको जो करना है वह एक नोड प्रीप्रोसेस फ़ंक्शन जोड़ना है जो आपके लिए उन फ़ाइलों को जोड़ता है। आप इसे मॉड्यूल में या कस्टम थीम में कर सकते हैं। एक मॉड्यूल के लिए यह होगा:
function mymodule_preprocess_node(&$variables) {
$node = $variables['node'];
if (!empty($node) && $node->nid == $the_specific_node_id) {
drupal_add_js(drupal_get_path('module', 'mymodule') . "/file.js", "module");
drupal_add_css(drupal_get_path('module', 'mymodule') . "/file.css", "module");
}
}
या एक विषय के लिए:
function mytheme_preprocess_node(&$variables) {
$node = $variables['node'];
if (!empty($node) && $node->nid == $the_specific_node_id) {
drupal_add_js(path_to_theme() . "/file.js", "theme");
drupal_add_css(path_to_theme(). "/file.css", "theme");
}
}
कैश को साफ़ करने के लिए, पहले मत भूलना।
इन कार्यों को नोड थीम्ड से पहले बुलाया जाता है। जेएस/सीएसएस निर्दिष्ट करने से वहां एक कैस्केड दृष्टिकोण की अनुमति मिलती है: आप मॉड्यूल में सामान्य/मूलभूत सामग्री प्राप्त कर सकते हैं और विषय में उन्नत या विशिष्ट कार्यक्षमता प्रदान कर सकते हैं।
मैंने इस तकनीक को ड्रूपल 5 में और अधिक उपयोग किया है। उदाहरण के लिए, इस साइट के सामने वाले पृष्ठ पर "क्लब कैलेंडर" इस तरह कार्यान्वित किया गया था। http://www.chesmontastro.org/ –
यह सबसे आसान समाधान हो सकता है, लेकिन जल्दी से असंभव हो जाता है, क्योंकि डेटाबेस में PHP कोड संग्रहीत करना बहुत मुश्किल है, और संशोधन नियंत्रण लगभग असंभव है। उपरोक्त इनफेरिस समाधान एक बहुत साफ दृष्टिकोण है। – jhedstrom