जावास्क्रिप्ट को एक विशिष्ट सामग्री प्रकार में जोड़ें


9

मैं यह जानना चाहूंगा कि सामग्री प्रकार पर आधारित विशिष्ट पृष्ठ में जावास्क्रिप्ट फ़ाइल को जोड़ने का सबसे अच्छा तरीका क्या है। उदाहरण के लिए, मैं इसे जोड़ना चाहता हूं:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

अब तक, मैंने जो कुछ भी किया है, वह मेरे विशिष्ट सामग्री प्रकार में जोड़ने के लिए इस तरह का उपयोग कर रहा है। Map_page सामग्री प्रकार के लिए, मैं पृष्ठ में कोड की नीचे दो पंक्ति जोड़ सकता हूं - map_page.tpl.php।

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

क्या कोई और बेहतर तरीका है? यदि संभव हो तो कुछ उदाहरण दे सकते हैं, वर्तमान में वास्तव में अच्छी तरह से समझ नहीं ...

जवाबों:


6

मैं उचित Drupal 7 समतुल्य पर टिप्पणी नहीं कर सकता, लेकिन Drupal 6 साइटों में मैं इसे एक template_preprocess_page में करता हूं ।

मेरे पास निर्णय लेने के लिए कुछ तर्क होंगे (या तो arg()या page_manager_get_current_page()पैनलों से आधारित ), और फिर $vars["scripts"]बाहरी स्क्रिप्ट के साथ प्रस्तुत करना। मैं यह कहता हूं कि मैं किसी भी स्थानीय स्क्रिप्ट के साथ निर्भरता की समस्या में न चलूं।

मैं कभी-कभी $global_scriptsGoogle API और SWFObject जैसी सोच के लिए एक नया क्षेत्र भी स्थापित करूंगा, जिसे मैं CDN से लोड करना चाहता हूं, और यह $scriptsपृष्ठ टेम्पलेट में पहले ही प्रिंट हो जाता है ।

ईमानदार होने के लिए, हालांकि मेरे पास सामान्य रूप से सभी पृष्ठों पर सभी जेएस हैं ताकि फाइलें कैश हो जाएं।


6

चूंकि template_preprocess_nodeद्रुपाल आपको फिर से परिभाषित करने की अनुमति नहीं देगा (क्योंकि यह पहले से ही नोडमॉड्यूल में परिभाषित है), मैंने अपने कस्टम मॉड्यूल में एक प्रीप्रोसेसर फ़ंक्शन जोड़ा:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

मैंने इसके preprocess_nodeबजाय उपयोग किया preprocess_pageक्योंकि नोड प्रकार के लिए इसे प्राप्त करना आसान है। यदि आप वास्तव में एक जावास्क्रिप्ट फ़ाइल का संदर्भ देते हैं, तो यह स्वचालित रूप से कैश किया जाएगा ( पैरामीटर्स अनुभाग देखें )।


2

आप सामग्री प्रकार के लिए हुक_नोड_व्यू जांच का भी उपयोग कर सकते हैं और फिर पहले से जो भी कर रहे हैं उसमें जेएस जोड़ें।

या

यदि आपके पास एक फ़ील्ड है जो जानकारी को आउटपुट करता है जो जेएस का उपयोग करेगा तो जेएस को जोड़ने के लिए एक प्रीप्रोसेसर का उपयोग करें, इसलिए जेएस शामिल सामग्री के बजाय नक्शे को प्रदर्शित करने वाले क्षेत्र पर निर्भर है।


0

एक सरल समाधान सिर्फ add_js को रखना है:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

पृष्ठ में / नोड template.php।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.