web-dev-qa-db-fra.com

Comment obtenir par programmation le nom du thème?

Dans Drupal 8, existe-t-il un moyen de comprendre quel thème vous utilisez actuellement dans un module? J'ai besoin d'obtenir le nom par programme dans le code d'un module.

8
Diana

L'utilisation du gestionnaire de thème est la bonne façon Drupal 8 d'obtenir des informations sur votre thème.

\Drupal::service('theme.manager')->getActiveTheme()

Une règle générale dans drupal 8 est de rechercher le service manager (/ handler).

** Remarque: comme Neograph734 l'a souligné, \Drupal::service('theme.manager')->getActiveTheme() renverra le objet de thème actif . Si vous voulez obtenir le nom de la machine du thème, utilisez \Drupal::service('theme.manager')->getActiveTheme()->getName()

21
Eyal

Cela le fera:

$config = \Drupal::config('system.theme');    
print $config->get('default');

Vous pouvez toujours utiliser drush pour explorer vos configurations disponibles:

drush config-list

et

drush config-list system

m'a donné une liste:

...
system.rss
system.site
system.theme.global
system.theme
...

puis je pourrais vérifier avec les éléments suivants:

drush cget system.theme.global

et

drush cget system.theme

pour enfin découvrir qu'il contient une propriété default qui était ce que vous demandiez.

5
  1. si vous voulez obtenir le nom réel du thème actif administration theme inclus Utilisation:

 $activeThemeName = \Drupal::service('theme.manager')->getActiveTheme(); 
  1. si vous voulez que votre thème sélectionné par défaut theme used in front ne pas admistartion theme Utilisation :

 $defaultThemeName = \Drupal::config('system.theme')->get('default');    
1
berramou

J'ai trouvé via ci-dessous dans Drupal 8

$theme = \Drupal::theme()->getActiveTheme();
0
Ankit Shah