現時点でDrupal CSSクラスを追加page-VIEWPATH
をbodyタグに追加します。 CSSクラスを追加するにはどうすればよいですかpage-VIEWNAME
サードパーティのモジュールまたはJQueryなしでbodyタグに?
前もって感謝します!
結局のところ、これは_hook_preprocess_html
_と_function views_get_page_view
_を組み合わせて行うことで、特定のビューとディスプレイの真の_<body>
_クラスを取得できます( APIページを参照 =)。
したがって、それを_hook_preprocess_html
_コンテキスト内でラップすると、次のようになります。
_/**
* Implements template_preprocess_html().
*
* Misc page preprocess functions.
*/
function mytheme_preprocess_html(&$vars) {
// Query the view and add a class
$view = views_get_page_view();
if (
isset($view) &&
$view->name == 'actions' &&
$view->current_display == "page"
) {
$vars['classes_array'][] = 'views-actions-page';
}
}
_
上記のように、ビュー名と表示をクエリし、キーは$view = views_get_page_view();
です。これは、ビューおよびディスプレイごとのカスタムビューボディクラスに最適です。
レンダリングされたHTMLの結果は次のようになります。
_<body class="html not-front logged-in no-sidebars
page-actions section-actions page-views flush-header views-actions-page">
_
** _views-actions-page
_は、上記の関数で追加したクラスです。
これとビュー生成クラスを使用することの利点は、ページのURLが変更されても、カスタムビュークラスは変更されないのに対し、_page-actions section-actions
_はURLに基づいて変更されることです。したがって、これらのクラスをテーマ化に使用すると、リップル効果がマイナスになるため、これらのクラスを使用すると信頼性が低下する可能性があります。
テーマフォルダのtemplate.php
で次の関数を使用します
function THEME_preprocess_views_view(&$variables){
$view = $variables['view'];
if($view->name == "YOUR_VIEW_NAME" && $view->current_display == "MACHINE_NAME_OF_VIEW"){
$variables['classes_array'][]="page-".$view->name;
}
}
current_path
など、その他の条件を設定することもできます。