it-swarm.asia

كيفية إضافة جافا سكريبت مشروطة إلى السمة؟

أود استخدام Selectivizr script لمحاكاة محددات CSS3 في IE6-8.

لكني أجد صعوبة في إضافته إلى موضوعي. حاول حتى الآن:

1) فرض هذا في قسم رأس html.tpl.php:

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

ولكن يبدو أن base_path () لا يعرض أي شيء في D7 (على الأقل في html.tpl.php - ربما في page.tpl.php ...). وأنا أعلم أن هذه ليست طريقة دروبال للقيام بذلك على أي حال.

2) إضافة إلى ملف معلومات السمة الخاص بي:

scripts[] = selectivizr.js

ولكن بعد ذلك غير مشروط ، بالطبع :(

3) باستخدام drupal_add_js () في my template.php.

ولكن مرة أخرى ، لست متأكدًا من أنه يمكن تعيينه بشكل مشروط هناك؟

10
pushka

أعتقد أن 1) هو الخيار الأفضل.

لا تحتاج لاستدعاء أي وظيفة ، لديك بالفعل هذه القيم:

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

لمعلوماتك ، <?php dsm($variables) ?> في أي ملف قالب لمعرفة المتغيرات المتاحة. (مع تثبيت وحدة التطوير)

هناك وحدة أوراق أنماط شرطية لها حل أنيق لإضافة IE الشروط في ملف .info ، لكنها لا تزال فقط لـ CSS. (انظر ميزة طلب لـ JS)

3
corbacho

هذه هي الطريقة التي أضفت بها html5shiv في ملف template.php الخاص بي:

$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');
15
jpatiaga

إذا لم يكن ملف 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]-->',
    )     
  );
}
1
Sergey Semashko

اعتقدت أن هذا تم خبزه ولكن كان خطأ.

يبدو أن السمة أم تستخدم هذا الميزان.

تقوم تقنية المعلومات بأشياء مختلفة قليلاً عنك ولكنها تقوم بشكل أساسي بخيارك 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.

1
Jeremy French
1
Dylan Tack