मैं प्रोग्रामेटिक रूप से थीम नाम कैसे प्राप्त कर सकता हूं?


8

Drupal 8 में, क्या यह पता लगाने का एक तरीका है कि आप वर्तमान में मॉड्यूल में किस विषय का उपयोग कर रहे हैं? मुझे मॉड्यूल के कोड के भीतर प्रोग्रामेटिक रूप से नाम प्राप्त करने की आवश्यकता है।

जवाबों:


23

थीम मैनेजर का उपयोग करना आपके विषय के बारे में जानकारी प्राप्त करने का उचित ड्रुपल 8 तरीका है।

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

ड्रुपल 8 में एक सामान्य नियम प्रबंधक (/ हैंडलर) सेवा के लिए है।

** ध्यान दें: जैसा कि Neograph734 ने बताया है, सक्रिय विषय वस्तु\Drupal::service('theme.manager')->getActiveTheme() लौटाएगा । यदि आप थीम मशीन-नाम प्राप्त करना चाहते हैं तो उपयोग करें\Drupal::service('theme.manager')->getActiveTheme()->getName()


5
ध्यान दें कि वास्तविक थीम नाम ActiveTheme से लिया जा सकता है getName()। तो थीम का नाम पाने के लिए कोई भी इस्तेमाल करेगा\Drupal::service('theme.manager')->getActiveTheme()->getName();
Neograph734

5

यह यह करेगा:

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

आप हमेशा अपने उपलब्ध कॉन्फिग को देखने के लिए ड्रश का उपयोग कर सकते हैं:

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संपत्ति है जो आपने मांगी थी।


4
यह उत्तर डिफ़ॉल्ट थीम देता है। ओपी ने वर्तमान विषय के लिए कहा, और स्वीकृत उत्तर वर्तमान विषय देता है। आम तौर पर यह कोई फर्क नहीं पड़ता, लेकिन अगर कोई मॉड्यूल है जो गतिशील रूप से पृष्ठ / डोमेन / उपयोगकर्ता आदि के आधार पर किसी विषय का चयन करता है तो अंतर महत्वपूर्ण है।
एडम

1
सच है, अगर कोई कस्टम थीम वार्ताकार खेल में है, तो परिणाम अलग-अलग होंगे। यदि नहीं, तो getActiveTheme()फ़ंक्शन ठीक उसी तरह से वापस आ जाएगा: $this->configFactory->get('system.theme')->get('default')
स्टीफनोस पेट्राकिस

1
  1. यदि आप वास्तविक सक्रिय थीम नाम administration themeशामिल करना चाहते हैं, तो उपयोग करें:

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

  1. यदि आप अपने डिफ़ॉल्ट चयनित विषय का उपयोग theme used in frontनहीं करना चाहते हैं admistartion theme:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.