Comment puis-je obtenir le chemin du thème Drupal actuel?
-
08-07-2019 - |
Question
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?
La solution
Utilisez la path_to_theme
.
Autres conseils
cela devrait fonctionner ( doc ):
global $theme;
$path = drupal_get_path('theme', $theme);
// there's also a $theme_path global
global $theme_path;
Dans D6, path_to_theme () peut ne pas se comporter de la manière que vous attendez, selon votre utilisation. Si vous l'utilisez en dehors de fonctions de préprocessus 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 sera pointé sur le chemin du module a déclaré le thème.
Ex. Si j'ai un thème " my_theme " et mon module " mon_module " qui redéfinit les thèmes du forum à l’aide des crochets de pré-traitement, en appelant path_to_theme () dans mon module: par ex. my_module_preprocess_forums () ... renverra "forums", et non "mon_thème". comme on pouvait s'y attendre.
Très fruité si vous me le demandez.
Dans Drupal 7, pour obtenir le chemin du thème actuel, nous pouvons utiliser: fonction path_to_theme () .
Dans Drupal 8
global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';
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. Sachez que cela n'inclut pas de barre oblique finale.
Dans Drupal 6, cela se comporte un peu différemment. Si vous l'appelez à partir de 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é des documents de l'API:
Il peut pointer sur le thème actif ou le module traitant un thème la mise en oeuvre. Par exemple, quand invoqué dans le cadre d'une thématisation appelez cela dépendra de l'endroit où le la fonction de thématisation est gérée. Si mis en œuvre à partir d'un module, il pointez sur le module. Si implémenté à partir du thème actif, il indiquera au thème actif. Quand appelé en dehors d'un appel thématisé, il indiquera toujours l'actif thème.
Source: http://api.drupal.org/api/function/path_path_to_theme
Pour D8, le dossier du thème 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 }}">