it-swarm.it

Mostra tutti i collegamenti di menu nidificati in Drupal 7

Come faccio a visualizzare tutti i collegamenti nidificati in <ul><li> format in Drupal 7? Il codice predefinito visualizza solo i collegamenti di 1 ° livello anche se sono disposti nel menu di amministrazione Drupal come nidificato:

<?php if ($main_menu): ?>
<div id="mainmenu"> <?php print theme( 'links__system_main_menu', array('links' => $main_menu) ); ?> </div>
<?php endif; ?>

Nell'ff viene visualizzato solo il 1 ° livello. impostazione del menu:

-Fruits
---Apples
---Oranges
---Lemons
-Cars
---Big car
---Small car
---Fucked up car
-Whatever
6
enchance

La variabile $main_menu Predefinita in page.tpl.php È impostata su menu_main_menu() , che è una vista contestuale dell'albero del menu principale.

Per ottenere l'output desiderato, è necessario ottenere l'intera struttura del menu utilizzando menu_tree_all_data() e menu_tree_output() .

Per fare questo nel tuo tema, crea template.php Se non l'hai già fatto e aggiungi una nuova funzione di preelaborazione per il modello di pagina:

function THEMENAME_preprocess_page(&$variables) {
  // Get the entire main menu tree
  $main_menu_tree = menu_tree_all_data('main-menu');

  // Add the rendered output to the $main_menu_expanded variable
  $variables['main_menu_expanded'] = menu_tree_output($main_menu_tree);
}

Quindi, in page.tpl.php, Puoi semplicemente usare:

<?php print render($main_menu_expanded); ?> 

per ottenere un elenco non ordinato ampliato, nidificato del menu principale.

Per un po 'più di flessibilità, potresti prendere in considerazione il modulo Blocco men , che ti permetterà di creare blocchi di menu espansi fuori dalla scatola con il suo Espandi tutti i bambini di questa struttura ad albero e una serie di altre opzioni per segmentare le strutture dei menu.

23
user7

Inoltre c'è un modulo menu_block che consente di creare quantità arbitrarie di blocchi personalizzati che mostrano le porzioni necessarie di menu

0
Dmitry Vyal