2011-11-16 21 views

उत्तर

8

आप hook_custom_theme() उपयोग कर सकते हैं:

function mymodule_custom_theme() { 
    if ($some_condition_is_true) { 
    return 'my_theme'; 
    } 
} 

आप रास्ते पर अपने चयन के आधार के लिए तो जाना सबसे अच्छा तरीका ओवरराइड करने के लिए है की जरूरत है विशेष मेनू राउटर आइटम के लिए theme callbackSee here for an example

1

हालांकि मुझे यकीन नहीं है कि जब आप विषय बदलना चाहते हैं तो स्थिति क्या है, लेकिन यदि आप एक यूआरएल, नोड प्रकार, वर्गीकरण अवधि, पृष्ठ देखें आदि के आधार पर विषय बदलना चाहते हैं तो आप संदर्भ का उपयोग कर इसे संभाल सकते हैं मॉड्यूल जो आपके लिए यह करेगा और आपको कोड की एक पंक्ति भी लिखनी पड़ेगी। इस की जाँच करें: http://drupal.org/project/context

यह एक बहुत ही उपयोगी मॉड्यूल और पैनल की तरह लगभग सभी प्रसिद्ध मॉड्यूल, ओमेगा विषय, डेल्टा के साथ अच्छा एकीकरण है आदि

0

Drupal चर theme_default एक आप विषय स्विच करने के लिए सेट करने के लिए है variable_set फ़ंक्शन का उपयोग करना।

variable_set('theme_default', 'your_theme_name'); 

आप अगर आप एक कस्टम मॉड्यूल पहले से ही स्थापित है एक hook_update_N के माध्यम से डिफ़ॉल्ट थीम बदल सकते हैं। यह भी सुनिश्चित करें कि आप कोड को hook_install में इंस्टॉल समय के दौरान चलाने के लिए कॉल करते हैं, यदि आप किसी अन्य के साथ अपना मॉड्यूल साझा करना चाहते हैं और इंस्टॉल समय के दौरान सक्रिय थीम बदलना चाहते हैं।

/** 
* Implements hook_update_N(). 
*/ 
function mymodule_update_7000() { 
    $theme_list = array(
    'bootstrap', 
    'mytheme', 
    'shiny', 
); 
    theme_enable($theme_list); 
    $theme_default = 'mytheme'; 
    // The below code would change the default active theme to 'mytheme' 
    variable_set('theme_default', $theme_default); 
    $admin_theme = 'shiny'; 
    variable_set('admin_theme', $admin_theme); 
} 
0

जबकि variable_set()hook_install() या hook_update_N() के लिए काम करेंगे, तो आप एक मॉड्यूल के भीतर इसका इस्तेमाल नहीं करना चाहिए। variable_set() कॉलिंग cache_bootstrap तालिका खाली करता है, जो व्यस्त साइटों पर एक गंभीर प्रदर्शन हिट है।

यदि आपको संदर्भ की पूर्ण शक्ति की आवश्यकता नहीं है तो मैं ThemeKey module की अनुशंसा करता हूं। हालांकि, संदर्भ संस्करण के लिए आसानी से निर्यात योग्य हैं, जबकि जहां तक ​​मुझे पता है कि थीमके नियमों को निर्यात करने का कोई तरीका नहीं है।