Как я могу программно получить название темы? [закрыто]


В Drupal 8 есть ли способ выяснить, какая тема вы в настоящее время используете в модуле? Мне нужно получить имя программно в коде модуля.

 9
8
Author: kiamlaluno, 2016-06-06

3 answers

Использование менеджера тем - это правильный способ получения информации о вашей теме на Drupal 8.

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

Общее правило в drupal 8 - искать службу менеджера (/обработчика).

** Примечание: как указано в Neograph734, \Drupal::service('theme.manager')->getActiveTheme() вернет активный объект темы . Если вы хотите получить имя машины темы, используйте \Drupal::service('theme.manager')->getActiveTheme()->getName()

 25
Author: Eyal, 2017-10-05 16:23:48

Это сделает это:

$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, о котором вы просили.

 6
Author: Stefanos Petrakis, 2016-06-06 21:21:46
  1. если вы хотите получить фактическое активное название темы administration theme включенное, используйте:

 $activeThemeName = \Drupal::service('theme.manager')->getActiveTheme(); 

  1. если вы хотите, чтобы выбранная по умолчанию тема theme used in front не admistartion theme Использование:

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

 2
Author: berramou, 2018-08-31 16:31:00