Wie erhalte ich den Pfad des aktuellen Drupal Thema?
-
08-07-2019 - |
Frage
Die Drupal API hat drupal_get_path($type, $name)
, welche den Weg eines bestimmten Thema geben oder Modul. Was passiert, wenn ich den Pfad des aktuellen Themas will?
Lösung
Mit der path_to_theme
Funktion.
Andere Tipps
Das sollte funktionieren ( doc ):
global $theme;
$path = drupal_get_path('theme', $theme);
// there's also a $theme_path global
global $theme_path;
In D6 path_to_theme () in einer Weise, die Sie erwarten, verhalten sich nicht je nachdem, wie Sie es verwenden. Wenn Sie es außerhalb jeglicher Thema Vorprozess Funktionen verwenden, dann wird es wahrscheinlich Ihnen, was Sie wollen, aber wenn es im Rahmen eines Moduls Theming / Vorprozess Hook-Funktion aufgerufen wird ... es wird auf den Modulpfad werden zeigen, dass erklärte das Thema.
Ex. Wenn ich ein Thema „my_theme“ und mein Modul „my_module“, die die Forum Themen überschreibt die Vorprozess Haken, ruft path_to_theme () in meinem Modul: z.B. my_module_preprocess_forums () ... will return "Foren", und nicht "my_theme", wie man erwarten könnte.
Sehr fruchtig, wenn Sie mich fragen.
In Drupal 7 zum aktuellen Thema des Weg bekommen, können wir verwenden: path_to_theme () Funktion.
In Drupal 8
global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
In Drupal 5, können Sie einfach: path_to_theme ()
Dies gibt Ihnen einen vollständigen Pfad von der Wurzel von Drupal zu dem spezifischen Themenverzeichnis. Seien Sie sich bewusst, es enthält nicht Slash.
In Drupal 6, dies verhält sich nur ein bisschen anders. Wenn Sie es aus Ihren Seiten aufrufe, wird es nennen, was derzeit die Thematisierung tut ... ob das Ihr Thema ist, ein Modul, usw. Hier ist der Schlüssel Zitat aus der API-Dokumentation:
Es kann auf das aktive Thema hinweisen oder das Modul ein Themen Handling Implementierung. Wenn zum Beispiel im Rahmen eines theming aufgerufen rufen wird es davon abhängen, wo die Theming-Funktion behandelt. Wenn von einem Modul implementiert, wird es weisen auf das Modul. wenn umgesetzt vom aktiven Thema, wird es zeigen zum aktiven Thema. wenn sie aufgerufen außerhalb des Bereichs eines theming Anrufs, es wird immer auf den aktiven Punkt Thema.
Für D8, die Themenordner in Vorprozess Funktionen zur Verfügung:
function hook_preprocess_page(&$variables) {
$variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}
page.html.twig:
<img src="{{ logo_src }}">