これはまったくありふれた質問かもしれませんが、私はそうは思いません。
ボイラープレートのようなテーマの<html>
要素に条件付きクラスを追加したい。私は事をきちんと保ち、私のpage.tpl.phpを複雑にしたくないです。
<?php
$htmlvar = 'xmlns="http://www.w3.org/1999/xhtml" xml:lang="' .
$language->language . '" lang="' .
$language->language . '" dir="'. $language->dir .'"';
?>
<!--[if lt IE 7 ]> <html class="ie6" <?php print $htmlvar ?>> <![endif]-->
<!--[if IE 7 ]> <html class="ie7" <?php print $htmlvar ?>> <![endif]-->
<!--[if IE 8 ]> <html class="ie8" <?php print $htmlvar ?>> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html <?php print $htmlvar ?>> <!--<![endif]-->
反応?提案?挑発?
Drupal 7の Zentropy 基本テーマがこれを行います、これがライブデモです: http://d7.webdrop.net .br /
そうは言っても、私はテーマの唯一のメンテナーであるため、すべての開発努力がDrupal 6バックポート、 こちらgithub にあります。また、この機能は最終的にD6バックポートから削除されました。
Drupal 7修正 drupal_add_css()
テンプレートファイルの外部に条件付きCSSを追加できるようにするための実際の良い方法はありませんが、 Drupal 6には何もありません。
Drupal 6で、任意の条件付きHTMLの場合、マークアップを _page.tpl.php
_ に直接追加する必要があります。または、テーマの変数を作成できます。関連するマークアップを文字列として含む template_preprocess_page()
の実装:
_function foo_preprocess_html(&$variables) {
$htmlvar = 'xmlns="http://www.w3.org/1999/xhtml" xml:lang="' .
$variables['language']->language . '" lang="' .
$variables['language']->language . '" dir="'. $language->dir .'"';
$variables['conditional_html'] = '<!--[if lt IE 7 ]> <html class="ie6"' . $htmlvar . '> <![endif]-->';
// Concactenate the rest of the conditional HTML here
}
_
次に、_$condtional_html
_の適切な場所に_html.tpl.php
_を追加します。
_function foo_preprocess_page(&$variables) {
$htmlvar = 'xmlns="http://www.w3.org/1999/xhtml" xml:lang="' .
$variables['language']->language . '" lang="' .
$variables['language']->language . '" dir="'. $language->dir .'"';
$variables['conditional_html'] = '<!--[if lt IE 7 ]> <html class="ie6"' . $htmlvar . '> <![endif]-->';
// Concactenate the rest of the conditional HTML here
}
_
次に、_$condtional_html
_の適切な場所に_page.tpl.php
_を追加します。
Drupal 7の条件付きCSS処理に興味がある場合は、Bartikの template_preprocess_html()
の実装例をご覧ください。
_function bartik_preprocess_html(&$variables) {
// ...
// Add conditional stylesheets for IE
drupal_add_css(path_to_theme() . '/css/ie.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'lte IE 7', '!IE' => FALSE), 'preprocess' => FALSE));
drupal_add_css(path_to_theme() . '/css/ie6.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'IE 6', '!IE' => FALSE), 'preprocess' => FALSE));
}
_
ブラウザクラスモジュールはここに行く方法です:
http://drupal.org/project/browserclass
例:
<body class="... chrome chrome11 mac desktop">
...
</body>
つまり、オペラ、サファリ、クロム、ネットスケープ、ff、konqueror、ディロ、キメラ、beonex、aweb、amaya、icab、lynx、galeon、operamini
モジュールはバージョンクラスを作成します。
ie [バージョン]、opera [バージョン]、chrome [バージョン]、safari [バージョン]、netscape [バージョン]、ff [バージョン]、konqueror [バージョン]、operamini [バージョン]
win、ipad、iPod、iphone、mac、Android、linux、nokia、blackberry、NetBSD、FreeBSD、OpenBSD
モジュールはデバイスがモバイルかどうかをチェックし、「モバイル」または「デスクトップ」クラスを追加します。