Créer un menu de pages CMS

La création d'un menu de pages CMS est très simple a réaliser avec le widget data cms.

Vous devez d'abord créer le conteneur du menu, dans notre exemple nous allons utiliser le fichier sidebar.tpl du dossier section.

{$parent = ($smarty.get.getidpage_p) ? $smarty.get.getidpage_p : $smarty.get.getidpage}
{widget_cms_data
            conf = [
                'context' => 'all',
                'level' => 'all'
            ]
            assign="sidebarData"
        }
{if $sidebarData}
<div id="nav-sidebar">
{include file="cms/loop/sidebar.tpl" data=$sidebarData parent=$parent}
</div>
{/if}

 Nous allons inclure le fichier contenant la boucle des éléments du menu comprenant pages parentes et pages enfants.

 Je vous conseil de créer un dossier nommé loop dans le dossier du module courant pour y placer le fichier contenant la boucle

{if isset($data.id)}
    {$data = [$data]}
{/if}
{$active = $smarty.get.getidpage}
{if is_array($data) && !empty($data)}
    <ul id="secondary-nav" class="nav nav-pills nav-stacked">
        {foreach $data as $item}
            <li{if $item.id == $parent} class="active"{/if}>
                <a href="{$item.url}" title="{#show_page#|ucfirst}">
                    {$item.name|ucfirst}
                </a>
                {if $item.subdata}
                    <ul class="hidden-sm">
                    {foreach $item.subdata as $subitem}
                        <li{if $subitem.id == $active} class="active"{/if}>
                            <a href="{$subitem.url}" title="{#show_page#|ucfirst}">
                                {$subitem.name|ucfirst}
                            </a>
                        </li>
                    {/foreach}
                    </ul>
                {/if}
            </li>
        {/foreach}
    </ul>
{/if}

 

Informations sur : Créer un menu de pages CMS ?