सशर्त जावास्क्रिप्ट को थीम में कैसे जोड़ें?


10

मैं IE6-8 में CSS3 चयनकर्ताओं का अनुकरण करने के लिए Selectivizr स्क्रिप्ट का उपयोग करना चाहूंगा ।

लेकिन मुझे अपने विषय से इसे जोड़ने में मुश्किल समय आ रहा है। अब तक की कोशिश की:

1) इसे html.tpl.php हेड सेक्शन में मजबूर करना:

<!--[if lt IE 9]>
<script src="<?php print base_path() . path_to_theme(); ?>/js/selectivizr.js"></script>
<![endif]-->

लेकिन D_7 में कुछ भी वापस नहीं दिखता है। और मुझे पता है कि यह वैसे भी ऐसा करने का Drupal तरीका नहीं है।

2) मेरे विषय की .info फ़ाइल में जोड़ना:

scripts[] = selectivizr.js

लेकिन तब यह बिना शर्त है, निश्चित रूप से :(

3) drupal_add_js ( ) का उपयोग करके मेरे टेम्पलेट में।

लेकिन फिर, मुझे यकीन नहीं है कि इसे सशर्त रूप से वहाँ सेट किया जा सकता है?

जवाबों:


3

मुझे लगता है कि आपका 1) सबसे अच्छा विकल्प है।

आपको किसी भी फ़ंक्शन को कॉल करने की आवश्यकता नहीं है, आपके पास पहले से ही वे मूल्य हैं:

<script type="text/javascript" src="<?php print $base_path . $directory; ?>/js/selectivizr.js"></script>

FYI करें, <?php dsm($variables) ?>किसी भी टेम्प्लेट फ़ाइल में यह देखने के लिए कि चर क्या उपलब्ध हैं। (डेवेल मॉड्यूल के साथ स्थापित)

वहाँ एक मॉड्यूल सशर्त Stylesheets है जो .info फ़ाइल में IE शर्तों को जोड़ने के लिए एक सुरुचिपूर्ण समाधान है, लेकिन अभी भी केवल CSS के लिए है। ( जेएस के लिए फीचर अनुरोध देखें )


15

इस तरह मैंने अपने टेम्पलेट में html5shiv जोड़ा है। एफपी फाइल:

$html5shiv = array(
  '#tag' => 'script',
  '#attributes' => array( // Set up an array of attributes inside the tag
    'src' => drupal_get_path('theme', 'mythemename') . '/js/lib/html5shiv.js', 
  ),
  '#prefix' => '<!--[if lte IE 8]>',
  '#suffix' => '</script><![endif]-->',
);
drupal_add_html_head($html5shiv, 'html5shiv');

4
कुछ बदलाव: '#value' जोड़ें और इसे '' सेट करें ''suffix' 'को बदलकर सिर्फ' <! [Endif] -> 'मानकों के अनुरूप मार्कअप प्राप्त करें।
एंग्री डैन

@ एंग्रीडान के सुझाव में संपादित।
विप्रोसेप्‍शन

1

मैंने सोचा कि यह बेक किया गया था लेकिन गलत था।

ऐसा लगता है कि मातृत्व विषय इस लिबरी का उपयोग करता है।

IT आपसे कुछ अलग चीजें करता है लेकिन अनिवार्य रूप से आपका विकल्प 1 है

  $vars['selectivizr'] = '<!--[if (gte IE 6)&(lte IE 8)]>';
  $vars['selectivizr'] .= '<script type="text/javascript" src="/sites/all/libraries/selectivizr/selectivizr.js"></script>';
  $vars['selectivizr'] .= '<![endif]-->';

यदि आपकी साइट अंडर नहीं है तो यह कोड काम नहीं करेगा

लेकिन अगर आपके विषय के लिए पुस्तकालय की आवश्यकता है, तो मुझे सशर्त कोड को page.tpl.php फ़ाइल में डालने की समस्या नहीं दिख रही है।


यदि आप पुस्तकालयों एपीआई, या drupal_get_path () का उपयोग कर रहे हैं, तो आप पुस्तकालयों_get_path () का उपयोग करने के लिए हार्ड कोडित लाइब्रेरी पथ बदल सकते हैं।
कृति


1

यदि आपकी JS फाइल में कोई निर्भरता नहीं है, तो इसे HTML के हेड टैग में इस तरह शामिल किया जा सकता है:

$selectivizr = array(
  '#tag' => 'script',
  '#attributes' => array(
    'src' => file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/selectivizr.js'),
  ),
  '#prefix' => '<!--[if lte IE 9]>',
  '#suffix' => '</script><![endif]-->'
);
drupal_add_html_head($selectivizr, 'selectivizr');

यदि आपके पास, jQuery निर्भरता है, तो यह कहना, पेज के नीचे अपना कोड डालने के लिए समझ में आता है:

function THEMENAME_preprocess_html(&$vars){
  $vars['page']['page_bottom']['jquery_dependent_js'] = array(
    'footer' => array(
      '#type' => 'markup',
      '#markup' => '<!--[if lte IE 9]><script src="' .
        file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/jquery_dependent_js.js'). '"></script><![endif]-->',
    )     
  );
}

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