Применить тему программно - PullRequest
1 голос
/ 10 ноября 2011

Я хочу применить отдельную тему для каждой роли пользователя. Я знаю, что есть возможность сделать это со стороны администратора, но я хочу сделать это программно.
Я нашел вариант, используя глобальный $ custom_theme. Я изменил свой код как

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

}

Но это не влияет на тему. Требуются ли какие-либо изменения?

Пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Я думаю, что уже слишком поздно менять тему в точке предварительной обработки переменных, вы, вероятно, захотите сделать это в hook_init():

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

.Я знаю, что нет необходимости вызывать init_theme(), поскольку Drupal сделает это позже для вас, используя глобальный $custom_theme, чтобы решить, какую тему использовать.

0 голосов
/ 10 ноября 2011

Тема уже инициализирована, когда ваш mymodule_config_preprocess_page() выполнен. после инициализации тема не может быть повторно инициализирована.

Глядя на код модуля ThemeKey , он меняет значение $custom_theme в hook_init(). Это, вероятно, лучший способ реализовать изменение темы в Drupal 6.

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