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.