Answers:
使用主题管理器是获取有关主题信息的Drupal 8的正确方法。
\Drupal::service('theme.manager')->getActiveTheme()
drupal 8中的一般规则是寻找管理器(/处理程序)服务。
**注意:正如Neograph734指出的那样,\Drupal::service('theme.manager')->getActiveTheme()
将返回活动主题对象。如果要获取主题机器名称,请使用\Drupal::service('theme.manager')->getActiveTheme()->getName()
这样做:
$config = \Drupal::config('system.theme');
print $config->get('default');
您可以随时使用drush探索可用的配置:
drush config-list
和
drush config-list system
给我一个清单:
...
system.rss
system.site
system.theme.global
system.theme
...
然后我可以检查以下内容:
drush cget system.theme.global
和
drush cget system.theme
最终发现它拥有default
您所要求的财产。
getActiveTheme()
函数最终将返回完全相同的结果:$this->configFactory->get('system.theme')->get('default')
我在Drupal 8中通过以下方式发现
$theme = \Drupal::theme()->getActiveTheme();
getName()
。因此,要使用主题名称,可以使用\Drupal::service('theme.manager')->getActiveTheme()->getName();