web-dev-qa-db-fra.com

Comment obtenir l'URL d'un fichier situé dans le dossier du thème?

Existe-t-il un moyen d'obtenir l'URL d'une image située dans le dossier du thème? Ou obtenez simplement l'URL du dossier de thème?

6
Andrey Rudenko

Vous pouvez utiliser drupal_get_path() pour obtenir le chemin d'accès à votre dossier de thème:

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

De là, vous pouvez spécifier un fichier particulier comme celui-ci:

$image_path = $path . '/images/image.jpg';

Vous pouvez également utiliser path_to_theme() , mais méfiez-vous car le retour de celui-ci peut changer en fonction du contexte dans lequel il est appelé:

Il peut pointer vers le thème actif ou le module gérant une implémentation thématique. Par exemple, lorsqu'elle est invoquée dans le cadre d'un appel de thème, cela dépend de l'endroit où la fonction de thème est gérée. S'il est implémenté à partir d'un module, il pointera vers le module. S'il est implémenté à partir du thème actif, il pointera vers le thème actif. Lorsqu'il est appelé en dehors de la portée d'un appel à thème, il pointe toujours vers le thème actif.

18
Clive
$imgurl = file_create_url(path_to_theme().'/images/blah.png');

description: cette ligne de code utilise path_to_theme (), pour obtenir le chemin d'accès au thème, puis file_create_url (), pour créer une URL pour le fichier, pour obtenir l'URL d'une image située dans le dossier du thème, comme demandé par l'op.

J'ai eu un downvote pour ne pas le décrire, alors vous êtes là :-)

c'est aussi la même que la réponse acceptée, juste avec des commentaires appliqués pour la rendre plus complète. veuillez noter qu'il fait référence au dossier de thème du thème actuel, il est donc principalement utile dans un modèle de thème.

6
commonpike

Dans Drupal 8

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