以编程方式应用主题

时间:2011-11-10 06:15:00

标签: php drupal drupal-6 drupal-modules

我想为每个用户角色应用单独的主题。我知道可以选择从管理员端执行此操作,但我想以编程方式执行此操作 我找到了一个使用全局$ custom_theme的选项。我将代码更改为

function mymodule_config_preprocess_page(&$variables) {
global $custom_theme;   
$custom_theme = 'bluemarine';
init_theme();

}

但它并没有影响主题。这是否需要进行任何修改?

请帮助我

2 个答案:

答案 0 :(得分:3)

我认为在预处理变量时更改主题为时已晚,您可能希望在hook_init()中执行此操作:

function mymodule_init() {
  global $custom_theme;   
  $custom_theme = 'bluemarine';
}

据我所知,没有必要调用init_theme(),因为Drupal稍后会在此过程中为您执行此操作,使用全局$custom_theme来决定使用哪个主题。

答案 1 :(得分:0)

执行mymodule_config_preprocess_page()时,主题已初始化。初始化后,主题无法重新初始化。

查看ThemeKey模块代码,它会更改$custom_themehook_init()的值。这可能是在Drupal 6中实现主题更改的最佳钩子。

function mymodule_init() {
  global $custom_theme;   
  $custom_theme = 'bluemarine';
}