2011-11-16 5 views

答えて

8

あなたがhook_custom_theme()使用することができますDrupalの7で動作していない:

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

をあなたがして行くための最善の方法をオーバーライドすることで、パス上のあなたの選択をベースにする必要がある場合特定のメニュールータ項目のtheme callbackSee here for an example

1

テーマを変更するときの条件は何かわかりませんが、URL、ノードタイプ、分類用語、ビューページなどに基づいてテーマを変更する場合は、Contextあなたのためにこれを行うモジュールで、1行のコードを書く必要はありません。これをチェックアウト:http://drupal.org/project/context

これは非常に便利なモジュールであり、パネルのようなほとんどすべての有名なモジュール、オメガテーマ、デルタとの素敵な統合を持っているなど

0

Drupalの変数theme_defaultを使用すると、テーマを切り替えるように設定する必要が1であります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は、Contextをフルに使用する必要がない場合にお勧めします。しかし、文脈はバージョン管理のために容易にエクスポート可能ですが、私が知る限りThemeKey規則をエクスポートする方法はありません。

関連する問題