Qual é a maneira correta de alterar o tema ativo do Drupal programaticamente?
22
Solução Drupal 6:
Você deseja certificar-se de alterar a $custom_theme
variável global bastante cedo na execução da página.
global $custom_theme;
$custom_theme = 'garland';
$custom_theme
definido? é suficiente para mudar o tema?hook_custom_theme
api.drupal.org/api/drupal/modules%21system%21system.api.php/…Sei que você perguntou como fazê-lo programaticamente, mas, se essa é a sua solução, não o problema real, você também pode usar o módulo ThemeKey . Isso permite definir condições que, quando atendidas, alteram o tema. Você pode criar condições com base em caminhos, taxonomia, tipo de conteúdo, criar ou editar data e muito mais. Você também pode adicionar o módulo Modulekey Properties para obter ainda mais opções.
Novamente, eu sei que isso não é programaticamente, mas não tenho certeza se a verdadeira questão por trás da sua pergunta é como alterar os temas com base nas condições.
fonte
A melhor maneira de fazer isso é criar um gancho de atualização em um módulo:
fonte
Alterando o tema ativo via Drush
Alterando o tema ativo por meio de um módulo
Noções básicas de alteração do tema padrão e do tema de administração:
Aqui está uma pequena função para restaurar os temas com segurança para os temas padrão do Drupal, como Bartik ou Garland (testados no Drupal 6 e 7):
Você pode chamá-lo em uma implementação hook_init () (comente depois que não for necessário):
fonte
variable_set('theme_default','yourtheme');
No Drupal 7, use
hook_custom_theme()
:Adaptado de <emoticode />
Retorne o nome legível por máquina do tema a ser usado na página atual.
Vale a pena ler os comentários para esta função:
fonte
Para o Drupal 8:
Em settings.php
Atualize a configuração programaticamente:
fonte