Как я могу программно получить название темы? [закрыто]
В Drupal 8 есть ли способ выяснить, какая тема вы в настоящее время используете в модуле? Мне нужно получить имя программно в коде модуля.
3 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
, о котором вы просили.
- если вы хотите получить фактическое активное название темы
administration theme
включенное, используйте:
$activeThemeName = \Drupal::service('theme.manager')->getActiveTheme();
- если вы хотите, чтобы выбранная по умолчанию тема
theme used in front
неadmistartion theme
Использование:
$defaultThemeName = \Drupal::config('system.theme')->get('default');