我想为每个用户角色应用单独的主题。我知道可以选择从管理员端执行此操作,但我想以编程方式执行此操作 我找到了一个使用全局$ custom_theme的选项。我将代码更改为
function mymodule_config_preprocess_page(&$variables) {
global $custom_theme;
$custom_theme = 'bluemarine';
init_theme();
}
但它并没有影响主题。这是否需要进行任何修改?
请帮助我
答案 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_theme
中hook_init()
的值。这可能是在Drupal 6中实现主题更改的最佳钩子。
function mymodule_init() {
global $custom_theme;
$custom_theme = 'bluemarine';
}