أود استخدام 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.
ولكن مرة أخرى ، لست متأكدًا من أنه يمكن تعيينه بشكل مشروط هناك؟
أعتقد أن 1) هو الخيار الأفضل.
لا تحتاج لاستدعاء أي وظيفة ، لديك بالفعل هذه القيم:
<script type="text/javascript" src="<?php print $base_path . $directory; ?>/js/selectivizr.js"></script>
لمعلوماتك ، <?php dsm($variables) ?>
في أي ملف قالب لمعرفة المتغيرات المتاحة. (مع تثبيت وحدة التطوير)
هناك وحدة أوراق أنماط شرطية لها حل أنيق لإضافة IE الشروط في ملف .info ، لكنها لا تزال فقط لـ CSS. (انظر ميزة طلب لـ JS)
هذه هي الطريقة التي أضفت بها 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');
إذا لم يكن ملف 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
$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_add_html_head () في template.php. للأسف # 865536: drupal_add_js () يفتقد خيار "المتصفحات"