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.
Respostas:
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:
fonte
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.
fonte
Como alternativa, você pode usar a nova
theme callback
opçã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
fonte
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;)
fonte
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 interessariapath: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 comoweb/*
ou/^web/.*
.Verificação: Como carregar um tema para o caminho
Uso avançado
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.
fonte
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ánode
como 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:
fonte
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ódulominha 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 alternarfonte
Você pode usar o módulo Tema da página para obter exatamente isso
fonte
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.
Recursos :
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.
fonte