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.
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()
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.
administration theme
inclus Utilisation:
$activeThemeName = \Drupal::service('theme.manager')->getActiveTheme();
theme used in front
ne pas admistartion theme
Utilisation :
$defaultThemeName = \Drupal::config('system.theme')->get('default');
J'ai trouvé via ci-dessous dans Drupal 8
$theme = \Drupal::theme()->getActiveTheme();