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]-->
しかし、base_path()はD7では何も返さないようです(少なくともhtml.tpl.phpで-多分page.tpl.phpで...)。とにかく、これはDrupalの方法ではないことを知っています。
2)テーマの.infoファイルに追加:
scripts[] = selectivizr.js
しかし、それはもちろん無条件です:(
3) drupal_add_js() を私のtemplate.phpで使用します。
しかし、繰り返しになりますが、条件付きで設定できるかどうかはわかりませんか?
私はあなたの1)が最良の選択だと思います。
関数を呼び出す必要はありません。すでにこれらの値を持っています。
_<script type="text/javascript" src="<?php print $base_path . $directory; ?>/js/selectivizr.js"></script>
_
参考までに、テンプレートファイルで<?php dsm($variables) ?>
を使用して、使用可能な変数を確認してください。 (develモジュールがインストールされている場合)
モジュールがあります 条件付きスタイルシート これは、.infoファイルにIE条件を追加するためのエレガントなソリューションがありますが、CSSに対してのみです。 featureリクエスト JSの場合)
これは、template.phpファイルに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');
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]-->',
)
);
}
これは焼き込まれていると思ったが間違っていた。
mothership テーマがこのライブラリを使用しているようです。
それはあなたとは少し違うことをしますが、本質的にあなたのオプションを行います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ファイルに挿入しても問題は発生しません。
私はtemplate.phpで drupal_add_html_head() を使用します。残念ながら #865536:drupal_add_js()には 'browsers'オプションがありません