webentwicklung-frage-antwort-db.com.de

Wie erhalte ich den Pfad des aktuellen Drupal-Themas?

Die Drupal-API verfügt über drupal_get_path($type, $name) , die den Pfad eines bestimmten Themas oder Moduls angibt. Was ist, wenn ich den Pfad des aktuellen Themas sehen möchte?

23
Steven Noble

Verwenden Sie die Funktion path_to_theme .

24
FGM

das sollte funktionieren ( doc ):

global $theme;
$path = drupal_get_path('theme', $theme);

// there's also a $theme_path global

global $theme_path;
19
Owen

In D6 verhält sich path_to_theme () möglicherweise nicht wie erwartet, je nachdem, wie Sie es verwenden. Wenn Sie es außerhalb von Theme-Vorverarbeitungsfunktionen verwenden, werden Sie wahrscheinlich das bekommen, was Sie möchten, aber wenn es im Kontext der Theming/Preprocess-Hook-Funktion 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, das die Forenthemen mithilfe der Vorprozess-Hooks überschreibt, muss in meinem Modul path_to_theme () aufgerufen werden: z. my_module_preprocess_forums () ... gibt "Foren" zurück und nicht "my_theme", wie man erwarten könnte.

Sehr fruchtig, wenn Sie mich fragen.

9

In Drupal 7 können Sie zum Abrufen des aktuellen Themenpfads Folgendes verwenden: path_to_theme () function.

4
Pupil

In Drupal 8 

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
2
Mike

In Drupal 5 können Sie einfach Folgendes verwenden: path_to_theme ()

Dadurch erhalten Sie einen vollständigen Pfad vom Stammverzeichnis von Drupal zum jeweiligen Designverzeichnis. Beachten Sie, dass es keinen abschließenden Schrägstrich enthält.

In Drupal 6 verhält sich das etwas anders. Wenn Sie es von Ihren Seiten aus aufrufen, ruft es das auf, was gerade das Theming durchführt. Ob es sich dabei um Ihr Thema, ein Modul usw. handelt.

Es kann auf das aktive Thema oder das Modul Verweisen, das eine themenorientierte Implementierung von Behandelt. Wenn zum Beispiel Im Rahmen eines Theming-Aufrufs Aufgerufen wird, hängt es davon ab, wo die - Themierungsfunktion behandelt wird. Wenn Von einem Modul aus implementiert wird, zeigt Auf das Modul. Wenn Aus dem aktiven Thema implementiert wird, zeigt es Auf das aktive Thema. Wenn Außerhalb eines Theming-Aufrufs aufgerufen wird, zeigt Immer auf das aktive Thema.

Quelle: http://api.drupal.org/api/function/path_to_theme

0
CaseySoftware

Für D8 ist der Themenordner in Vorverarbeitungsfunktionen verfügbar: 

function hook_preprocess_page(&$variables) {
  $variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}

page.html.twig: 

<img src="{{ logo_src }}">
0
s6712