Visualizzare un submenu solo se esistono pagine figlio

Per quelli come me che non amano navigare in un sito internet usando un unico menu, orizzontale o verticale che sia, e magari espandibile al passaggio del mouse con tecniche CSS o l’utilizzo di codice JavaScript.
Per quelli come me che preferiscono un menu principale orizzontale dove siano indicate le sezioni principali del sito:

Menu principale orizzontale

Associato ad un menu secondario verticale nella colonna di sinistra o di destra, in cui vengano riportati i link alle pagine contenute nella sezione scelta.
In aggiunta, vogliono che il menu secondario venga visualizzato solo se esistono delle pagine figlio nella sezione scelta.

Menu secondario verticale

Ebbene, questo è possibile inserendo poche linee di codice nel template e usando solo i moduli inclusi nel core di CMS Made Simple.

Prima stampiamo il menu principale orizzontale dove sono indicate solo le sezioni principali del sito (le pagine di primo livello):

{menu number_of_levels="1"}

Adesso passiamo al menu secondario verticale:

<h2>Submenu</h2>
{menu start_level="2" collapse="1"}

In questo caso però, il titolo <h2> verrebbe stampato senza nessun menu anche quando la sezione non contiene pagine figlio.

Per evitare che il titolo <h2> venga stampato quando la sezione non contiene pagine figlio, usiamo questo codice:

{capture assign=SubMenu}{menu start_level="2"}{/capture}
{if $SubMenu}
<h2>Submenu</h2>
{menu start_level="2" collapse="1"}
{/if}

Questo codice “cattura” nella variabile SubMenu il menu contenete le pagine di secondo livello della sezione, e se l’oggetto esiste lo stampa insieme ad un titolo <h2>.

Se poi vogliamo che il titolo <h2> del submenu sia il nome sella sezione stessa dobbiamo prima installare il modulo CGSimpleSmarty.
Con l’aiuto delle funzioni get_root_alias e get_page_menutext del modulo CGSimpleSmarty il codice da inserire nel template diventa:

{capture assign=SubMenu}{menu start_level="2"}{/capture}
{if $SubMenu}
<h2>{$cgsimple->get_page_menutext($cgsimple->get_root_alias(),'')}</h2>
{menu start_level="2" collapse="1"}
{/if}

Questo codice “cattura” nella variabile SubMenu il menu contenente le pagine di secondo livello della sezione, e se l’oggetto esiste lo stampa insieme ad un titolo <h2> che rappresenta il testo del menu corrispondente alla sezione a cui appartiene la pagina.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *