2011-11-16 19 views

cevap

8

Sen hook_custom_theme() kullanabilirsiniz Drupal 7. çalışmıyor:

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

sonra gitmek için en iyi yolu geçersiz kılmak için bir yol üzerinde seçiminizi temel almak gerekiyorsa belirli menü yönlendirici öğeleri için theme callback. See here for an example. Temayı değiştirmek istediğinizde durumun ne olduğundan emin değilim, ancak temayı bir url, düğüm türü, taksonomi terimi, görünüm sayfası vb. Olarak değiştirmek istiyorsanız, bunu Bağlam kullanarak gerçekleştirebilirsiniz.

1

Bunu sizin için yapacak olan modül ve tek bir kod satırı yazmanız bile gerekmez. Bu kontrol edin: http://drupal.org/project/context

Bu çok kullanışlı modül ve paneller gibi neredeyse tüm ünlü modüllerin omega tema delta ile güzel entegrasyonu vardır vs.

0

Drupal değişken theme_default Eğer tema geçmek belirlemek zorunda biridir variable_set işlevini kullanarak. Özel bir modül zaten yüklü varsa

variable_set('theme_default', 'your_theme_name'); 

Bir hook_update_N aracılığıyla varsayılan temasını değiştirebilirsiniz. Modülünüzü bir başkası ile paylaşmak ve kurulum sırasında aktif temayı değiştirmek istemeniz durumunda, yükleme sırasında bunu çalıştırmak için kodu hook_install'da aradığınızdan emin olun.

/** 
* 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() iken bir modül içinde kullanmak gerekir, hook_install() veya hook_update_N() için çalışacaktır. variable_set() numaralı telefonu arayarak cache_bootstrap tablosunu boşaltır, bu da yoğun sitelerde ciddi bir performans isabetidir.

Bağlamın tam gücüne ihtiyacınız yoksa ThemeKey module'u öneririm. Ancak, ThemeKey kurallarını dışa aktarmanın bir yolu olmadığını bildiğim kadarıyla, bağlamlar sürüm oluşturma için kolayca ihraç edilebilir.