Tema adını programlı olarak nasıl alabilirim?


8

Drupal 8'de bir modülde şu anda hangi temayı kullandığınızı anlamanın bir yolu var mı? Adı bir modülün kodu içinde programlı olarak almam gerekiyor.

Yanıtlar:


23

Tema yöneticisini kullanmak, temanız hakkında bilgi almanın uygun Drupal 8 yoludur.

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

Drupal 8'deki genel kural, yönetici (/ işleyici) hizmetini aramaktır.

** Not: Neograph734'ün işaret ettiği gibi \Drupal::service('theme.manager')->getActiveTheme(), aktif tema nesnesini döndürecektir . Tema makine adını almak istiyorsanız\Drupal::service('theme.manager')->getActiveTheme()->getName()


5
Gerçek tema adının ActiveTheme ile türetilebileceğini unutmayın getName(). Kullanılacak tema adını almak için\Drupal::service('theme.manager')->getActiveTheme()->getName();
Neograph734

5

Bunu yapacak:

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

Mevcut yapılandırmalarınızı keşfetmek için her zaman drush'ı kullanabilirsiniz:

drush config-list

ve

drush config-list system

bana bir liste verdi:

...
system.rss
system.site
system.theme.global
system.theme
...

ve sonra aşağıdakileri kontrol edebilirim:

drush cget system.theme.global

ve

drush cget system.theme

Sonunda defaultne istediğini bir özellik olduğunu öğrenmek için.


4
Bu cevaplar varsayılan temayı döndürür. OP geçerli temayı istedi ve kabul edilen cevap geçerli temayı döndürür. Normalde önemli değil, ancak sayfa / etki alanı / kullanıcı vb.'ye bağlı olarak temayı dinamik olarak seçen bir modül varsa, fark önemlidir.
AdamS

1
Doğru, oyunda özel bir tema müzakerecisi varsa, sonuçlar farklı olacaktır. Değilse, getActiveTheme()işlev tamamen aynı şekilde geri dönecektir: $this->configFactory->get('system.theme')->get('default')
Stefanos Petrakis

1
  1. gerçek etkin tema adını administration themedahil etmek istiyorsanız Kullanın:

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

  1. Varsayılan seçilmiş tema istiyorsanız theme used in frontdeğil admistartion themekullanımı:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.