Como altero um tema com base no URL?
Eu tenho uma instância do Drupal em execução no example.org. Que tem um tema X instalado e ativado. Agora, por um período limitado, um evento deve ser realizado no site para o qual uma seção especial foi "esculpida". Todas as coisas relacionadas a esse evento irão para example.org/event2011.
Eu quero ter um tema diferente para ser mostrado sempre que uma página sob esta seção é visto (por exemplo http://example.org/event2011/about , http://example.org/event2011/node/123 ). Como faço isso?
Eu já passei por muitos módulos, mas nenhum deles suporta o Drupal 7. De preferência, eu gostaria que isso fosse feito usando módulos e não quero mudar nada no nível do código.
Você deseja ter um site separado inteiro sob o caminho / event2011 / node / 123 como você é?
Considerando que a mudança ocorre por um período limitado de tempo e que a implementação desse código não é difícil, sugiro que implemente um módulo personalizado que altere o tema que está sendo usado para páginas específicas.
Basta implementar da hook_custom_theme()seguinte maneira:
Se você precisar alterar o tema apenas para http://example.com/event2011 , mas não para http://example.com/event2011/node/123 , o código deverá ser alterado para
Quanto ao uso de retornos de chamada de tema na definição de um retorno de menu, a documentação diz:
Como regra geral, o uso de funções de retorno de chamada de tema deve ser limitado a páginas cuja funcionalidade está intimamente ligada a um tema específico, uma vez que elas só podem ser substituídas por módulos direcionados especificamente a essas páginas hook_menu_alter(). Os módulos que implementam uma funcionalidade de troca de tema mais genérica (por exemplo, um módulo que permita que o tema seja definido dinamicamente com base na função do usuário atual) devem ser usados hook_custom_theme().
Eu sugeriria a função current_path () api.drupal.org/api/drupal/includes%21path.inc/function/… . Você vai ter um mais fácil "para" condição
Uma solução personalizada como o outro comentário sugere é provavelmente a melhor, mas se você realmente deseja usar um módulo, sua melhor aposta é a ThemeKey . A partir de 23/05/11, ele possui uma versão estável.
— tim.plunkett
Como alternativa, você pode usar a nova theme callbackopção do sistema de menus, hook_menu_alter()conforme descrito abaixo. ps Checkout hook_menu () para obter mais detalhes sobre otheme callback
Além disso, há também um exemplo de uso dos métodos mais tradicionais hook_custom_theme()
Retirado de: http://drupal.org/node/224333#custom_theme
Você pode simplesmente usar o Contexto e usar o tema para ser aplicado quando o caminho for / event2011 /. Você pode simplesmente definir o caminho na condição de cotext e alterar o tema na ação do conteúdo. Foi assim que você pode alternar facilmente entre temas em um site com base no URL. Até funciona para celulares;)
— Amitav Roy
a ação tema passa variáveis personalizadas para o tema, que na verdade não mudá-lo
O uso do ThemeKey é simples e, até o momento, é o módulo mais popular e poderoso (com suporte para 8.x) para regras de troca de temas que permitem a seleção automática de um tema, dependendo do caminho atual, termos de taxonomia, idioma, tipo de nó e muitos, muitas outras propriedades. Também pode ser facilmente estendido para suportar propriedades adicionais expostas por outros módulos. Além dos recursos padrão, o ThemeKey estende automaticamente os recursos de muitos módulos contrib e possui módulos que o estendem.
Uso (7.x)
Após ativar o módulo, vá para admin/config/user-interface/themekey. Existem muitas opções para alternar o tema, mas provavelmente você se interessaria path:node_alias; portanto, defina o valor conforme desejar / my_url e selecione o tema que deseja ativar nesse URL. Você também pode usar curingas como web/*ou /^web/.*.
Verificação: Como carregar um tema para o caminho
O ThemeKey 7.x contém um módulo opcional chamado ThemeKey Example para demonstrar aos desenvolvedores como estender o ThemeKey.
Ajuda (7.x)
Confira o tutorial em vídeo da Mustardseed (7.x).
Mais ajuda sobre esse tópico pode ser encontrada em /admin/help/themekey.
Verifique também outras questões relacionadas ao tema .
Como alternativa, também existe o Switchtheme (7.x), que adiciona um bloco para permitir que os usuários alternem entre os temas ativados.
Ao usar aliases de URL ou o módulo Pathauto , esteja ciente das sutilezas e diferenças ao usar componentes do caminho atual do Drupal.
Há situações em que você pode não querer usar arg () . De fato, a documentação da API Drupal na verdade sugere evitar o uso dessa função sempre que possível, pois o código resultante é difícil de ler.
Considere o seguinte exemplo, conforme proposto por kiamlaluno :
No Drupal 7, se um nó tiver um alias de event2011 , use arg(0)retornará nodecomo o primeiro componente de URL, em oposição ao alias.
Em vez disso, se você precisa trabalhar com um alias, existem várias maneiras de obter a URL atual em Drupal , incluindo menu_get_object(), current_path(), request_path()e outros.
Aqui está um exemplo reformulado que usa um alias como gatilho para alternar o tema:
Como alternar tema dependendo da função do usuário:
Crie um módulo personalizado e copie e cole o seguinte:
Você precisa substituir:
mymodule => com o nome do seu módulo
minha função especial => com o nome da função que seus usuários precisam ter para que possam ver um tema diferente.
mytheme => com o nome do tema para o qual você deseja alternar
— drupalfever
Você pode usar o módulo Tema da página para obter exatamente isso
O módulo Tema da página é um módulo simples e fácil de usar, que permite usar temas diferentes do padrão do site em páginas específicas.
Atribua um tema a uma única página ou lista de páginas. (Defina uma página como um caminho Drupal)
Permite usar o caractere '*' como curinga nos caminhos do Drupal.
Permitir organizar temas. (Se houver várias páginas definidas, o primeiro tema da lista será usado)
Permitir ativar / desativar um tema.
Drupal iniciante amigável.
— Gerente profissional de TI
Você pode usar o módulo Tema da página para obter exatamente isso: O módulo Tema da página é um módulo simples e fácil de usar, que permite usar temas diferentes do padrão do site em páginas específicas.
Atribua um tema a uma única página ou lista de páginas. (Defina uma página como um caminho Drupal) Permite usar o caractere '*' como curinga nos caminhos Drupal. Permitir organizar temas. (Se houver várias páginas definidas, o primeiro tema da lista será usado) Permitir ativar / desativar um tema. Drupal iniciante amigável.
como você pode usar: Seções que possuem a maioria dos recursos do Tema da página, mas adicionam uma seleção baseada em função e uma área "snpet php" para escolher o tema.
mas se você quiser usar temas diferentes do padrão do site na criação, edição e exibição de páginas, poderá usar o Tema de Conteúdo, que permite usar temas diferentes do padrão do site na criação, edição e exibição de páginas.