Câu trả lời:
Sử dụng trình quản lý chủ đề là cách Drupal 8 thích hợp để nhận thông tin về chủ đề của bạn.
\Drupal::service('theme.manager')->getActiveTheme()
Một quy tắc chung trong drupal 8 là tìm kiếm dịch vụ quản lý (/ handler).
** Lưu ý: như Neograph734 đã chỉ ra, \Drupal::service('theme.manager')->getActiveTheme()
sẽ trả về đối tượng chủ đề đang hoạt động . Nếu bạn muốn lấy tên máy chủ đề thì hãy sử dụng\Drupal::service('theme.manager')->getActiveTheme()->getName()
Điều này sẽ làm điều đó:
$config = \Drupal::config('system.theme');
print $config->get('default');
Bạn luôn có thể sử dụng drush để khám phá các cấu hình có sẵn của bạn:
drush config-list
và
drush config-list system
cho tôi một danh sách:
...
system.rss
system.site
system.theme.global
system.theme
...
và sau đó tôi có thể kiểm tra như sau:
drush cget system.theme.global
và
drush cget system.theme
để cuối cùng phát hiện ra rằng nó nắm giữ một default
tài sản đó là những gì bạn yêu cầu.
getActiveTheme()
chức năng cuối cùng sẽ trở lại giống hệt nhau: $this->configFactory->get('system.theme')->get('default')
administration theme
bao gồm Sử dụng:
$activeThemeName = \Drupal::service('theme.manager')->getActiveTheme();
theme used in front
không
admistartion theme
sử dụng:
$defaultThemeName = \Drupal::config('system.theme')->get('default');
Tôi tìm thấy thông qua cách dưới đây trong Drupal 8
$theme = \Drupal::theme()->getActiveTheme();
getName()
. Vì vậy, để có được tên chủ đề người ta sẽ sử dụng\Drupal::service('theme.manager')->getActiveTheme()->getName();