以下の例のように、クラスをbodyタグに動的に追加する方法は?
-ホーム
-都市
-メルボルン<body class="melbourne">
- -テーマパーク <body class="melbourne theme_parks">
---レストラン<body class="melbourne restaurants">
- ニューヨーク <body class="new_york">
- -テーマパーク <body class="new_york theme_parks">
---レストラン<body class="new_york restaurants">
-お問い合わせ <body class="contact_us">
Drupalの初心者で、プログラミングのバックグラウンドはありません。したがって、ソリューションを共有するときに、できるだけ詳細に説明していただければ幸いです。
Nikhil Mohanの答えを詳しく説明するには、テーマのtemplate.phpファイル内に template_preprocess_html()
を実装できます。 Themable出力のオーバーライド に関するドキュメントを読んで、ここで行われていることの基本を理解してください。
この関数内で、ページのHTML _$vars['classes_array']
_タグに適用されるクラスのリストを保持する変数_<body>
_にアクセスできます。
残念ながら、メニュー内の現在のページの場所に関する情報はすぐには利用できません。 menu_get_item()
を使用し、次に menu_get_ancestors()
を使用してこの情報を取得できますが、これは、おそらくsimpilerアプローチで到達できます。
Pathautoモジュールを使用して、メニューパスに基づいてコンテンツページのセマンティックパスを自動的に作成している(つまり、メルボルンのテーマパークページにパス 'melbourne/theme_parks'がある)場合、ページのパスを使用してクラスを作成できます。探しています:
_function THEMENAME_preprocess_html(&$vars) {
$path = drupal_get_path_alias();
$aliases = explode('/', $path);
foreach($aliases as $alias) {
$vars['classes_array'][] = drupal_clean_css_identifier($alias);
}
}
_
それでおしまい。 Drupalは現在のページのパスエイリアスを確認し、パスエイリアスの各チャンクの_<body>
_タグにクラスを追加します。
template_preprocess_html
、html.tpl.phpの前処理変数
参照 html.tpl.php
単一のDrupalページの基本的なhtml構造を表示するためのデフォルトのテーマ実装
これは、ロールまたはページに基づいてbodyタグにクラスを追加するモジュールです。
これを支援するために Body Classes Drupal module を作成しました。問題を作成して、さらに体クラス統合ポイントを追加してください。