Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 11. September 2013 07:03

mshan
hat von CMS/ms gehört
Registriert: 16. April 2013
Beiträge: 8

{menu} die ersten beide Ebenen anzeigen, die dritte nur nach Klick

Hallo ich habe ein Menü, wo die ersten, beiden Menüebenen
immer, die dritte Menüuebene, aber nur nach Klick auf die zweite Menüebene dargestellt werden soll.

Habe es schon mit {menu} und collapse,number_of_levels versucht, aber ohne Erfolg.

Meine Menüstruktur ist so:

Home
Über Uns
--Mitarbeiter
--Firma
Produkte
--Produktgruppe 1
--Produktgruppe 2
----Produkt 2.1
----Produkt 2.2
--Produktgruppe 3
----Produkt 3.1
----Produkt 3.2
Kontakt
Impressum


Angezeigt werden soll es so und wenn ich auf eine Produktgruppe klicke
sollen die untergeordneten Produkte erscheinen:

Home
Über Uns
--Mitarbeiter
--Firma
Produkte
--Produktgruppe 1
--Produktgruppe 2
--Produktgruppe 3
Kontakt
Impressum


Vielleicht gibt es da ja eine eine Möglichkeit mit {menu} oder ein Smarty-Menütemplate.

Vielen Dank für Eure Hilfe.

Offline

#2 15. September 2013 11:21

altermac
hat von CMS/ms gehört
Registriert: 14. September 2013
Beiträge: 3

Re: {menu} die ersten beide Ebenen anzeigen, die dritte nur nach Klick

Hallo!
Ich setze genau diese Struktur auf meiner Site www.oldmac.de ein. Der menue-Tag im Template sieht so aus:

[== Smarty ==]
{menu template='SimpleMenue' start_level='0' number_of_levels='9' collapse='1' loadprops='0'}

Das verwendete Template ist dieses:

[== Smarty ==]
{* CSS classes used in this template:
Only SPAN and A is used in an UL/LI.
 *} 

{assign var='number_of_levels' value=10000}
{if isset($menuparams.number_of_levels)}
  {assign var='number_of_levels' value=$menuparams.number_of_levels}
{/if}

{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->parent == true or $node->current == true}
<li><span>{$node->menutext}</span>
{else}
<li><a href="{$node->url}">{$node->menutext}</a>
{/if}

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

Ich habe ein zwei Besonderheiten:
1. Der komplette Pfad zur Seite wird nur als <span> ohne Link ausgeführt. Das CSS formatiert Link und span der Navigation gleich und hebt dabei den Pfad in der Navigation farbig hervor. Sozusagen Breadcrumps in der Navigation integriert - Der Leser sieht sofort wo er gelandet ist.

2. Ich baue interne Seitenlinks ein, um die erste Seite einer Untergruppe in der darüberliegenden Ebene anzuzeigen zu können. Beispiel:

  1. Home  (Inhalt)
  2. Gruppe A (Seitenlink auf 2.1)
    2.1  Inhalt A1 (inhalt)
    2.2  Inhalt A2 (Inhalt)
    2.3  Gruppe A3 (Seitenlink auf 2.3.1)
        2.3.1 Inhalt A3.1 (Inhalt)
        .... usw ...


Die Navigation ist ansonsten eine klassische <ul><li>-Navigation. In der Navigation fehlen alle Links, die nicht zum aktuellen Zweig und den zum Pfad gehörigen Gruppen enthalten sind. Macht auch aus SEO-Sicht einen schlanken Fuß.

Gruß
Altermac

Offline