जांचें कि क्या थीम प्रोग्रामेटिक रूप से सक्षम है


9

मैं यह देखने के लिए कैसे जांच कर सकता हूं कि क्या कोई विषय एक ड्रुपल इंस्टॉलेशन पर सक्षम है या नहीं? मैं कुछ मॉड्यूल_exists () की तरह देख रहा हूं, लेकिन थीम के लिए। मुझे प्रलेखन पर कुछ भी नहीं मिला।

जवाबों:


6

List_themes का उपयोग करें

पैरामीटर

$ ताज़ा : डेटाबेस से विषयों की सूची को पुनः लोड करना है या नहीं। FALSE में चूक।

प्रतिलाभ की मात्रा

वर्तमान में उपलब्ध थीमों का एक सहयोगी सरणी। चाबियाँ थीम की मशीन के नाम हैं और मूल्य निम्नलिखित गुण वाले ऑब्जेक्ट हैं:

  • फ़ाइल नाम : .info फ़ाइल का नाम फ़ाइलपथ और नाम।
  • नाम : थीम का मशीन नाम।
  • स्थिति : सक्षम विषयों के लिए 1, विकलांग विषयों के लिए 0।
  • जानकारी : .info फ़ाइल की सामग्री।
  • स्टाइलशीट : मीडिया विशेषता के लिए पहली कुंजी (उदाहरण के लिए 'सभी') का उपयोग करते हुए एक दो आयामी सरणी, फ़ाइल के नाम के लिए दूसरा (जैसे style.css)। मान एक पूर्ण फ़ाइलपैथ (उदाहरण के लिए थीम / बार्टिक / स्टाइल.कैंस) है। सेट नहीं है अगर कोई स्टाइलशीट .info फ़ाइल में परिभाषित नहीं है।
  • स्क्रिप्ट्स : जावा वर्णनों का एक साहचर्य सरणी, फ़ाइल नाम को कुंजी के रूप में और संपूर्ण फ़ाइलपाथ को मान के रूप में उपयोग करना। अगर कोई स्क्रिप्ट .info फ़ाइल में परिभाषित नहीं है, तो सेट न करें।
  • उपसर्ग : आधार थीम इंजन उपसर्ग।
  • इंजन : थीम इंजन का मशीन नाम।
  • base_theme : यदि यह एक सब-थीम है, तो .info फ़ाइल में परिभाषित बेस थीम का मशीन नाम है। अन्यथा, तत्व सेट नहीं है।
  • base_themes : यदि यह एक उप-विषय है, इस विषय के आधार-विषय के पूर्वजों का एक सहयोगी सरणी है, जो इस विषय के आधार विषय के साथ शुरू होता है, तो आधार विषय का अपना आधार विषय आदि, प्रत्येक प्रविष्टि में विषय के बराबर एक सरणी कुंजी होती है। मशीन का नाम, और मानव-पठनीय थीम नाम के बराबर मूल्य; यदि मिलान मशीन नाम वाला कोई थीम सिस्टम में मौजूद नहीं है, तो मान बजाय NULL होगा (और चूंकि सिस्टम को यह नहीं पता होगा कि क्या उस थीम में स्वयं एक बेस थीम है, जो आधार थीम की सरणी को समाप्त कर देगा)। यह सेट नहीं है यदि थीम उप-विषय नहीं है।
  • sub_themes : सिस्टम पर उन विषयों की एक साहचर्य सारणी जो या तो प्रत्यक्ष उप-थीम हैं (अर्थात, वे इस विषय को अपना आधार विषय घोषित करते हैं), उप-विषयों के प्रत्यक्ष उप-विषय, आदि। कुंजी विषय की मशीन हैं नाम और मूल्य थीम के मानव-पठनीय नाम हैं। यह तत्व सेट नहीं है अगर सिस्टम पर कोई थीम नहीं है जो इस थीम को उनके आधार थीम के रूप में घोषित करता है।

सक्रिय विषय पाने के लिए path_to_theme का उपयोग करें ..

यह सक्रिय थीम या थीम्ड कार्यान्वयन को संभालने वाले मॉड्यूल को इंगित कर सकता है। उदाहरण के लिए, जब एक थीमिंग कॉल के दायरे में आह्वान किया जाता है, तो यह इस बात पर निर्भर करेगा कि थीमिंग फ़ंक्शन को कहां हैंडल किया जाता है। यदि एक मॉड्यूल से कार्यान्वित किया जाता है, तो यह मॉड्यूल को इंगित करेगा। यदि सक्रिय थीम से कार्यान्वित किया जाता है, तो यह सक्रिय थीम को इंगित करेगा। जब एक थीमिंग कॉल के दायरे के बाहर कहा जाता है, तो यह हमेशा सक्रिय थीम को इंगित करेगा।


3

डेटा वास्तव में उसी स्थान पर रखा गया है, systemतालिका। मैं जांच करने के लिए एक मौजूदा फ़ंक्शन नहीं ढूंढ सका (हालांकि शायद कहीं एक है), लेकिन यह एक चुटकी में करना चाहिए:

function theme_exists($theme_name) {
  $themes = list_themes();
  return isset($themes[$theme_name]) && $themes[$theme_name]->status == 1;
}

1
मैंने अभी-अभी एक ही चीज़ टाइप करना समाप्त किया था -_- हालाँकि मैं theme_existsथीम सिस्टम के साथ किसी भी संभावित समस्या को दूर करने के लिए फ़ंक्शन को केवल कॉल नहीं
करूंगा

1
list_themes () पहले से ही स्थिर कैशिंग करता है, इसलिए इस फ़ंक्शन में संभवतः इसके लिए कोई आवश्यकता नहीं है।
लेटेरियन

1
मेकअप बातें करने के लिए की तरह @Chapabu मैं ... दिलचस्प;)
क्लाइव

@Letharion क्षमा अभी पता चला है कि तुम क्या मतलब है, कि बिट निकाल देंगे
क्लाइव

1
मेरा मतलब यह नहीं था कि यह कार्य आवश्यक नहीं था, मुझे लगता है कि यह बहुत अच्छा है। मैं आपके अपने कथन का उल्लेख कर रहा था कि इसे कैशिंग के साथ बेहतर बनाया जा सकता है, जो मुझे नहीं लगता कि इस उदाहरण में सहायक होगा।
१०:४
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.