Naveguei pela Web e não é de todo óbvio como tema de menus personalizados. Eu procurei por horas e não encontrei uma única postagem que ilustra o processo, do início ao fim, de criar um menu e personalizar sua saída. Parece que este é um processo de várias etapas:
- Crie o menu através da interface Drupal.
- Crie uma função de tema no seu
template.php
arquivo para criar um tema para a saída. - Exponha esse menu a um arquivo de modelo (de alguma forma) adicionando-o como uma variável.
- Chame a
theme
função no menu no arquivo de modelo.
1 é fácil de resolver, os problemas com que encontro são 2, 3 e 4. Observando o modelo de página padrão, vejo que ele expõe o menu principal da variável $main_menu
. Mais tarde, na página, você pode ver a função theme('links__system_main_menu', array('links' => $main_menu...
, o que significa que está procurando uma função de tema com nome apropriado em algum lugar e usando-a para gerar a saída.
Sei que coloco function theme_links__system_main_menu(&$variables) {...}
no meu arquivo template.php o Drupal usará essa função em oposição a function theme_menu_links(&$variables) {...}
.
O que não sei é como o Drupal vincula o menu personalizado que criei com essa função. Digamos, por exemplo, que eu criei um menu chamado My Menu
. Eu poderia criar a seguinte função no meu template.php
arquivo e tema a saída para esse menu?function theme_links__system_my_menu(&$variables) {...}
Além disso, como tornar esse menu personalizado disponível para um arquivo de modelo? Como o Drupal expõe a $main_menu
variável ao page.tpl.php?
Acho que a chave que falta aqui é como incorporar a variável que representa meu menu personalizado em uma página de modelo. Na maioria das vezes, estou completamente perdido com o que fazer depois de criar o menu.
Obrigado pela ajuda.
Edição: Provavelmente deve postar o que estou fazendo. De acordo com meu comentário ao BetaRide abaixo, preciso injetar HTML personalizado nos <li>
elementos dos itens de menu. Especificamente, estou adicionando ícones do Twitter Bootstrap.
Você pode procurar no módulo Nice Menus . Aqui está uma citação sobre ele (na página do projeto do módulo):
fonte
Dependendo do que você deseja personalizar, sua abordagem é muito complicada. Normalmente, eu crio o menu através da interface do Drupal, como você sugeriu. Eu uso o módulo de desenvolvedor de temas e o Firebug para descobrir quais modelos, ganchos e diretivas CSS tenho que sobrescrever para ajustá-lo às minhas necessidades.
Vale a pena considerar a criação de um subtema do tema base que você está usando antes de começar a ajustar. Isso facilita muito a atualização do tema base.
fonte
aqui está um código inteligente que pode acessar todos os itens de menu para qualquer nível 2, 3 ou mais
coloque este código dentro do seu arquivo tpl, não se esqueça de chamar as últimas versões boostrap js e css:
esse código retornará o menu para as classes css, você pode usar o seu próprio, estou usando o bootstrap com alguns css personalizados
fonte