在模块的上下文中,如何确定为当前用户加载的主题?
drupal_get_path
path_to_theme
这些都没有任何好处,因为它们似乎只能在主题的template.php中使用。
答案 0 :(得分:3)
如果允许用户为自己选择主题,则他们选择的主题将保存在$user->theme
中,其中$user
是用户对象。
如果模块设置了自定义主题,则全局变量$custom_theme
包含当前设置的主题的名称。
以下代码段在$current_theme
中保存当前有效主题的名称:
global $custom_theme, $theme, $user;
if (!empty($user->theme)) {
$current_theme = $user->theme;
}
elseif (!empty($custom_theme)) {
$current_theme = $custom_theme;
}
else {
$current_theme = $theme ? $theme : variable_get('theme_default', 'garland');
}
答案 1 :(得分:1)
path_to_theme
应该可以正常工作,我在两个Drupal安装上进行了测试,两者都有效。如果主题尚未初始化,path_to_theme
将执行此操作,这是Drupal在内部用于设置不同的全局主题变量,如$theme_path
,这是您要查找的变量。