Foto by GregoryHUn problema que me he encontrado al desarrollar una web en drupal, es que si yo creo mis menus principales con hijos dentro, donde me muestra drupal estos submenus?

Caso:
Menu 1

- Submenu 1
- Submenu 2
- Submenu 3

Menu 2
Menu 3

La idea era hacer click al menú padre que se encuentra en el header y poder mostrar los submenus al lateral izquierdo de la pagina.

Para poder mostrar los submenus modifiqué los siguientes archivos del theme.

Abrimos el fichero template.php de nuestro theme y creamos esta función:

PHP:
  1. function nombre_theme_menu_navigation_tree($menu_name, $level = 0) {
  2. // Controlamos que exista el menu.
  3. if (empty($menu_name)) {
  4. return array();
  5. }
  6.  
  7. // Buscamos la herencia del menu.
  8. $tree = menu_tree_page_data($menu_name);
  9.  
  10. // Comprobamos el nivel de profundidad del menú.
  11. while ($level--> 0 && $tree) {
  12. // Recorremos el array para comprobar item por item del menu,
  13. while ($item = array_shift($tree)) {
  14. if ($item['link']['in_active_trail']) {
  15. // Si el item del menu esta activo buscamos sus submenus.
  16. $tree = empty($item['below']) ? array() : $item['below'];
  17. break;
  18. }
  19. }
  20. }
  21. return $tree;
  22. }

Dentro del mismo fichero template.php vamos a modificar la función preprocess_page, o en caso de no existir, la creamos. Esta función nos permite insertar mas variables que usaremos en el fichero page.tpl antes de que este se cargue.

PHP:
  1. function nombre_theme_preprocess_page(&$vars, $hook) {
  2. // Insertamos dentro del array vars nuestro item de submenus. Este array contiene todas las variables que se usan en el template.
  3. // Para buscar el nombre del menu, hacemos uso de la función variable_get
  4. // El 1 equivale al nivel 1, pero podriamos pasar x niveles de menu.
  5. $vars['mitheme_submenus'] = nombre_theme_menu_navigation_tree(variable_get('menu_primary_links_source', 'primary-links'), 1);
  6. }

Para finalizar y ver el resultado, insertamos la variable $mitheme_submenus dentro de page.tpl.php:

PHP:
  1. // Usamos la función  <a title="menu_tree drupal" href="http://api.drupal.org/api/function/menu_tree_output/6" target="_self">menu_tree_output</a> para renderizar el listado de submenus
  2. print menu_tree_output($mitheme_submenus);

Para realizar mi theme he usado el theme zen y recomiendo que antes de empezar a realizar un theme desde 0 se tenga en cuenta estos themes de desarrollo ya que nos ahorrará mucho tiempo y problemas en el desarrollo.
Y como siempre en todo desarrollo, leer la documentación oficial :)