it-swarm.com.de

Wie füge ich dem BODY-Tag dynamisch Klassen hinzu, basierend auf dem Seitenpfad / der Tiefe?

Wie füge ich dem Body-Tag dynamisch Klassen hinzu, wie in diesem Beispiel unten?

-Zuhause
- Städte
- Melbourne <body class="melbourne">
---Freizeitparks <body class="melbourne theme_parks">
--- Restaurants <body class="melbourne restaurants">
--New York <body class="new_york">
---Freizeitparks <body class="new_york theme_parks">
--- Restaurants <body class="new_york restaurants">
-Kontaktiere uns <body class="contact_us">

Drupal-Neuling hier und ohne Programmierhintergrund. Daher würde ich mich sehr freuen, wenn Sie beim Teilen einer Lösung so detailliert wie möglich sein könnten.

21
kyooriouskoala

Um die Antwort von Nikhil Mohan zu erläutern, können Sie template_preprocess_html() in die Datei template.php Ihres Themas implementieren. Lesen Sie die Dokumentation zu Overriding Themable Output , um die Grundlagen der Vorgänge hier zu verstehen.

Innerhalb dieser Funktion haben Sie Zugriff auf die Variable $vars['classes_array'], Die eine Liste von Klassen enthält, die auf das HTML-Tag <body> Auf der Seite angewendet werden.

Leider sind Informationen über den Speicherort der aktuellen Seite im Menü nicht sofort verfügbar. Sie könnten menu_get_item() und dann menu_get_ancestors() verwenden, um diese Informationen zu erhalten, aber das ist viel Rechenleistung für etwas, das wir haben kann wahrscheinlich mit einem Simpiler-Ansatz kommen.

Angenommen, Sie verwenden das Pathauto-Modul, um automatisch semantische Pfade für Ihre Inhaltsseiten basierend auf dem Menüpfad zu erstellen (dh Ihre Melbourne Theme Parks-Seite hätte den Pfad 'melbourne/theme_parks'), können Sie den Pfad der Seite verwenden, um die von Ihnen erstellten Klassen zu erstellen sind auf der Suche nach:

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);
  } 
}

Das ist es. Drupal überprüft nun den Pfadalias der aktuellen Seite und fügt dem Tag <body> Für jeden Teil des Pfadalias eine Klasse hinzu.

37
sheena_d

Sie können template_preprocess_html , welche Variablen für html.tpl.php vorverarbeiten

Siehe auch html.tpl.php

Standard-Theme-Implementierung zur Anzeige der grundlegenden HTML-Struktur einer einzelnen Seite Drupal Seite)

1
niksmac

Hier ist das Modul zum Hinzufügen von Klassen zu Body-Tags basierend auf Rollen oder Seiten.

Common Body Class

Erstellt das Body Classes Drupal Modul , um dies zu unterstützen. Sie können gerne Probleme erstellen, um weitere Integrationspunkte für Body Classes hinzuzufügen.

0
RobLoach