web-dev-qa-db-fra.com

Comment puis-je obtenir le chemin du thème Drupal actuel?

L'API Drupal a drupal_get_path($type, $name) qui donnera le chemin d'un thème ou d'un module particulier. Et si je veux le chemin du thème actuel?

23
Steven Noble

Utilisez la fonction path_to_theme .

24
FGM

cela devrait fonctionner ( doc ):

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

// there's also a $theme_path global

global $theme_path;
19
Owen

Dans D6, path_to_theme () peut ne pas se comporter de la manière que vous attendez, en fonction de la manière dont vous l’utilisez. Si vous l'utilisez en dehors de fonctions de pré-traitement de thème, il vous donnera probablement ce que vous voulez, mais s'il est appelé dans le contexte de la fonction de raccord thématisation/pré-traitement d'un module ... il indiquera le chemin du module qui a déclaré le thème.

Ex. Si j'ai un thème "my_theme" et mon module "my_module", qui redéfinit les thèmes du forum à l'aide des crochets de prétraitement, appelez path_to_theme () dans mon module: par exemple. my_module_preprocess_forums () ... renverra "des forums" et non "mon_thème" comme on pourrait s'y attendre.

Très fruité si vous me demandez.

9
Fruity functions

Dans Drupal 7, pour obtenir le chemin du thème actuel, nous pouvons utiliser: path_to_theme () function.

4
Pupil

Dans Drupal 8 

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

Dans Drupal 5, vous pouvez simplement utiliser: path_to_theme ()

Cela vous donnera un chemin complet de la racine de Drupal au répertoire du thème spécifique. Soyez conscient, cela n'inclut pas une barre oblique finale.

Dans Drupal 6, cela se comporte un peu différemment. Si vous l'appelez depuis vos pages, il appellera tout ce qui est actuellement en cours de thématisation ... qu'il s'agisse de votre thème, d'un module, etc. Voici la citation de clé provenant de la documentation de l'API:

Il peut pointer sur le thème actif ou sur Le module gérant une implémentation thématique . Par exemple, quand Est invoqué dans le cadre d'un appel de thématisation , Cela dépendra du lieu où la fonction de thématisation Est gérée. Si Est implémenté à partir d'un module, il Pointe vers le module. Si implémenté À partir du thème actif, il dirigera Vers le thème actif. Lorsqu'il est appelé En dehors du cadre d'un appel thématisé, Désignera toujours le thème actif .

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

0
CaseySoftware

Pour D8, le dossier de thèmes est disponible dans les fonctions de prétraitement: 

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

page.html.twig: 

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