Bandeau cms

Menu:

Activités

CMS Made Simple

Quoi de neuf ?

Page 1 of 5  > >>

03/05/10
Category: Modules et extensions

Une alternative intéressante à Picasa pour charger de nombreuses photos sur son site en une opération (par FTP par exemple) et les afficher sous forme d'icônes.

07/07/09
Category: Modules et extensions
Rédaction d'un aide-mémoire sur le module de news de CMS Made Simple.
06/12/09
Category: Modules et extensions

Pourquoi faire ? Eh bien par exemple pour afficher - ou non - le bloc de contenu en question.

Il est possible de demander l'affichage d'un bloc vide, par exemple pour prévoir son emplacement dans le gabarit. Mais si le designer a prévu un fond dans la CSS, on aura le fond et pas de contenu (puisque vide).

Comme on ne peut pas tester directement le contenu du bloc, il faut le mettre dans une variable que l'on peut tester.

Menus de navigation "classiques" : horizontal et vertical

Menus de navigation dépendants : la navigation secondaire dépend de la page courante

Autres exemples de menus

Mises en formes avancées dans les menus

Menu manager

Un menu horizontal typique :

 

{* CSS classes used in this template:
.activeparent - The top level parent when a child is the active/current page
li.active0n h3 - n is the depth/level of the node. To style the active page for each level separately. The active page is not clickable.
.clearfix - Used for the unclickable h3 to use the entire width of the li, just like the anchors. See the Tools stylesheet in the default CMSMS installation.
li.sectionheader h3 - To style section header
li.separator - To style the ruler for the separator *}
 
{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
   {if $node->depth > $node->prevdepth}
    {repeat string="<ul>" times=$node->depth-$node->prevdepth}
    {elseif $node->depth < $node->prevdepth}
    {repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
    </li>
   {elseif $node->index > 0}</li>
    {/if}
 
{if $node->current == true}
{* *}
   <li class="currentpage">{$node->menutext}
{elseif $node->parent == true}
    <li class="currentpage">
     <a href="{$node->url}"
    {if $node->accesskey != ''}
     accesskey="{$node->accesskey}"
    {/if}
    {if $node->tabindex != ''}
    tabindex="{$node->tabindex}"
    {/if}
    {if $node->titleattribute != ''}     
    title="{$node->titleattribute}"
    {/if}
    >

       {$node->menutext}

</a>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
<li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}>{$node->menutext}</a>

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

 

Un menu latéral typique :


{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
   {if $node->depth > $node->prevdepth}
    {repeat string="<ul>" times=$node->depth-$node->prevdepth}
    {elseif $node->depth < $node->prevdepth}
    {repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
    </li>
   {elseif $node->index > 0}</li>
    {/if}
 
{if $node->current == true}
{* *}
   <li>{$node->menutext}

{elseif $node->parent == true}

    <li>
     <a  href="{$node->url}"
    {if $node->accesskey != ''}
     accesskey="{$node->accesskey}"
    {/if}
    {if $node->tabindex != ''}
    tabindex="{$node->tabindex}"
    {/if}
    {if $node->titleattribute != ''}     
    title="{$node->titleattribute}"
    {/if}

    >

       {$node->menutext}

</a>

{elseif $node->type == 'sectionheader'}
<li >{$node->menutext}

{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />

{else}
<li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}>{$node->menutext}</a>

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}

 

Deux menus dépendants l'un de l'autre


    A mettre dans le template (menu principal)

{hierarchy}
{cms_module module='menumanager' start_element=$h_this template='menu-lateral' collapse='0'}
{hierarchy}
{menu template="menu-lateral" start_level=$h_this number_of_levels="1"}

      Template de mon menu secondaire



    {if $count > 0}
    <ul>
    {foreach from=$nodelist item=node}
       {if $node->depth > $node->prevdepth}
        {repeat string="<ul>" times=$node->depth-$node->prevdepth}
        {elseif $node->depth < $node->prevdepth}
        {repeat string="</li></ul>" times=$node->prevdepth-$node->depth}
        </li>
       {elseif $node->index > 0}</li>
        {/if}
     
    {if $node->current == true}
    {* *}
       <li>{$node->menutext}

    {elseif $node->parent == true}

        <li>
         <a  href="{$node->url}"
        {if $node->accesskey != ''}
         accesskey="{$node->accesskey}"
        {/if}
        {if $node->tabindex != ''}
        tabindex="{$node->tabindex}"
        {/if}
        {if $node->titleattribute != ''}     
        title="{$node->titleattribute}"
        {/if}

        >

           {$node->menutext}

    </a>

    {elseif $node->type == 'sectionheader'}
    <li >{$node->menutext}

    {elseif $node->type == 'separator'}
    <li class="separator" style="list-style-type: none;"> <hr />

    {else}
    <li><a href="{$node->url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}>{$node->menutext}</a>

    {/if}

    {/foreach}
    {repeat string="</li></ul>" times=$node->depth-1}</li>
    </ul>
    {/if}

     

Le tag "hierarchy" (user defined tag)

    

global $gCms;
$pos = $gCms->variables['position'];
$base = explode('.', $pos);
$totalDepth = count($base);
$parentDepth = $totalDepth;
$count = 0;

foreach($base as $parentLevel) {
    $parentLevel = ltrim($parentLevel, "0" );
    if($count <= $parentDepth) {
        $thisLevel .= $parentLevel . ".";
    }
   if($count < $parentDepth) {   
        $theParent .= $parentLevel . ".";
    }
  $count++;
}

$smarty->assign('h_toplevel', $base[0] * 1);
$smarty->assign('h_parent', rtrim($theParent, "." ));
$smarty->assign('h_this',  rtrim($thisLevel, "." ));

    

 

Le menu du magasin de jouets (footer)

Développeur CMS Made Simple : menu footer

   

{if $count > 0}
<ul>
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="<ul>" times=$node->depth-$node->prevdepth}
{elseif $node->depth < $node->prevdepth}
{repeat string="</li>  

  <li><div class="blank">|</div></li>

    </ul>" times=$node->prevdepth-$node->depth}
</li>  


  <li><div class="blank">|</div></li>


{elseif $node->index > 0}</li> 


  <li><div class="blank">|</div></li>


{/if}

{if $node->current == true}

<li><a href="{$node->url}" class="active"
{if $node->target ne ""} target="{$node->target}"
{/if}>
{$node->menutext} </a>

{elseif $node->parent == true && $node->depth == 1 and $node->type != 'sectionheader' and $node->type != 'separator'}
<li class="activeparent"> <a href="{$node->url}" class="activeparent"
{if $node->target ne ""} target="{$node->target}"
{/if}> {$node->menutext} </a>

{elseif $node->type == 'sectionheader'}
<li class="sectionheader">{$node->menutext}

{elseif $node->type == 'separator'}
<li style="list-style-type: none;"> <hr class="separator" />

{else}
<li><a href="{$node->url}"{if $node->target ne ""} target="{$node->target}"{/if}> {$node->menutext} </a>

{/if}

{/foreach}

{repeat string="</li>  

  <li><div class="blank">|</div></li>

</ul>" times=$node->depth-1}</li>
</ul>
{/if}

   

Dernier item du menu sans séparateur

Développeur CMS Made Simple : Menu sans barre verticale après le dernier item
Dans le menu ci-dessus, la barre verticale utilisée comme séparateur ( | ) apparaît après chaque lien sauf le dernier.

       {if $node->index != ($count-1)} {* dernier *}
            |           
    {/if}   

Il suffit de comparer l'index du lien (0, 1, 2) avec le nombre total de liens (3).

Le template de menu du menumanager

   

{if $count > 0}

{foreach from=$nodelist item=node}

 
{if $node->current == true}
    {$node->menutext}</a>
       {if $node->index != ($count-1)} {* dernier *}
         &nbsp;|
       {/if}


{elseif $node->parent == true}

     <a href="{$node->url}"
    {if $node->accesskey != ''}
     accesskey="{$node->accesskey}"
    {/if}
    {if $node->tabindex != ''}
    tabindex="{$node->tabindex}"
    {/if}
    {if $node->titleattribute != ''}    
    title="{$node->titleattribute}"
    {/if}
    >

       {$node->menutext}</a>

{else}
<a href="{$node->url}"
{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}

{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}
{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}
{if $node->target != ''} target="{$node->target}"{/if}>
{$node->menutext}</a>
   {if $node->index != ($count-1)}
            &nbsp;|
    {/if}
{/if}
{/foreach}
{/if}

      

... et son appel dans le template 


{cms_module module='menumanager' start_element='1.2' template='menu_navigation'}

 Extrait de la CSS

D'habitude on souhaite que la page courante se différencie des autres éléments du menu, mais pas cette fois.

 

#header #header-links {
color:#5B4A29;
font-family:Georgia,"Times New Roman",Times,serif;
font-size:11px;
font-size-adjust:none;
font-style:normal;
font-variant:normal;
font-weight:bold;
line-height:normal;
text-transform:uppercase;
#header #header-links a {
color:#5B4A29;
font-weight:bold;
padding:0 1.4px;
text-decoration:none;