Die Drupal-API hat drupal_get_path($type, $name)
, die den Pfad eines bestimmten Themas oder Moduls angeben. Was, wenn ich den Pfad des aktuellen Themas möchte?Wie bekomme ich den Pfad des aktuellen Drupal-Themes?
Antwort
Verwenden Sie die path_to_theme
Funktion.
dies sollte funktionieren (doc):
global $theme;
$path = drupal_get_path('theme', $theme);
// there's also a $theme_path global
global $theme_path;
Hallo Owen Vielen Dank für die info –
Es ist besser, 'path_to_theme()' zu verwenden, als '$ theme_path' zu verwenden. – kiamlaluno
Warum ist es besser, path_to_theme() anstelle von $ theme_path zu verwenden? – timoxley
In Drupal 5, können Sie einfach: path_to_theme()
Dies Ihnen einen vollständigen Pfad von der Wurzel von Drupal zu dem spezifischen Themenverzeichnis geben. Beachten Sie, dass es keinen abschließenden Schrägstrich enthält.
In Drupal 6 verhält sich das ein bisschen anders. Wenn Sie es von Ihren Seiten aufrufen, wird es aufrufen, was gerade das Thema macht ... ob das Ihr Thema ist, ein Modul, etc. Hier ist das Schlüssel Zitat aus der API-Dokumentation:
Es kann zeigen zum aktiven Thema oder das Modul mit einer themenorientierten Implementierung. Wenn zum Beispiel im Rahmen eines Themas Aufruf aufgerufen wird es davon abhängen, wo die Theming-Funktion behandelt wird. Wenn von einem Modul implementiert wird, wird auf das Modul zeigen. Wenn das aktive Thema implementiert ist, wird es auf das aktive Thema zeigen. Wenn sie außerhalb des Bereichs eines Theming-Aufrufs aufgerufen wird, zeigt sie immer auf das aktive Thema.
In D6 path_to_theme() in einer Weise, die Sie je nach erwarten nicht so verhalten, wie Sie es verwenden. Wenn Sie es außerhalb von Theme-Preprocess-Funktionen verwenden, wird es Ihnen wahrscheinlich geben, was Sie wollen, aber wenn es im Kontext der Funktion "Theming/Preprocess Hook" eines Moduls aufgerufen wird, zeigt es auf den Modulpfad erklärte das Thema.
Ex. Wenn ich ein Thema "my_theme" und mein Modul "my_module" habe, welches die Forenthemen über die Preprocess-Hooks überschreibt, rufe path_to_theme() in meinem Modul auf: z. my_module_preprocess_forums() ... gibt "Foren" zurück und nicht "my_theme", wie man es erwarten könnte.
Sehr fruchtig, wenn Sie mich fragen.
In Drupal 7, um den Pfad des aktuellen Themas zu erhalten, können wir verwenden: path_to_theme() Funktion.
Für D8 ist das Thema Ordner 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 }}">
In Drupal 8
global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
Beachten Sie, dass, wenn von innen aufgerufen wird "theme_ *" Funktion path_to_there Pfad zum aktuellen Modul anstelle des Pfads zum derzeit aktiven Thema zurückgeben, was zu Fehlern führen kann, finden Sie weitere Details in diesem Fehlerbericht: http: //drupal.org/node/ 194098 – webdevbyjoss