Drupal: URL Alias als CSS Klasse

Norman Kämper-Leymann, 19 January 2015
  • Drupal
  • Drupal 7
  • CSS
  • template_preprocess_html()
  • arg()

In Drupal eine CSS-Klasse an den Body abhängig vom Alias-Pfad hängen

Wer kennt das nicht? Man braucht auf einer ganz bestimmten Node ein ganz besonderes Styling. Und weil alle so geil auf Semantik sind, muss man eine CSS-Klasse an den Body hängen, die genau so heißt, wie der Alias-Pfad der Node.

Die Klasse klatscht man am besten über die template_preprocess_html() an den <body> ran. In dem folgenden, speziellen Fall guckt man zuerst, ob das 2. Argument des Alias-Pfads einem bestimmten String gleicht und hängt diesen dann an das Klassen-Array der $variables an. Ganz besonders schön ist hier auch zu sehen, wie man Drupals arg()-Funktion mit dem Alias-Pfad nutzt.

function MYTHEME_preprocess_html(&$vars) {
  if (arg(2, drupal_get_path_alias()) == 'foo') {
    $vars['classes_array'][] = drupal_clean_css_identifier(arg(2, drupal_get_path_alias()));
  }
}