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

#1 13. März 2014 14:58

ichbinsnur
hat von CMS/ms gehört
Registriert: 24. Februar 2014
Beiträge: 1

3. menü-LVL per smarty auslesen.

Hi ihrs,

hier ist gerade ein Anfänger am Werk.
ich versuche gerade die page-navigation so umzuschreiben dass ich das 3te level auch ausgeworfen bekomme.

Und NEIN, {menu number_of_levels="3" } hilft mir nichts, weil ich "dazwischen" muss.

Wie komm ich von dem standartcode (?) in der page-navi dazu mir die dritte ebene mit auszugeben, aber so dass ich sie wrappen kann.

meine (ziel-) struktur sieht so aus:

        -<li> LVL1 (1.Baum)
        -- <div>
        ------ <ol>
        ----------- <li>
        ---------------- LVL2- (1.1 Nadelbaum)
        -------------------- <ol>
        ------------------------ <li> LVL3- (1.1.1 Tanne )

kann mir jemand einen tipp geben?
einen link?

(bitte nicht google oder die forensuche. da komm ich immer auf den selben threads raus,...)

Danke!!!!

cmsms: 1.10.3

Offline

#2 13. März 2014 16:55

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: 3. menü-LVL per smarty auslesen.

Willkommen,

ich verstehe leider die Frage nicht. Was heißt "dazwischen"?

Auch deinen angedeuteten Code mit dem div mitten in der Liste kann ich nicht so recht nachvollziehen.

Über css kannst du eigentlich jede Menü-Ebene wrappen. Nämlich über die ul bzw ol bei dir. UL kannst du genauso  behandeln wie ein div.

bsp:

#menu ul {deine styles 1. ebene;}

#menu li ul {deine styles 2. ebene;}

#menu li ul li ul {deine styles 3. ebene;}

Beitrag geändert von antibart (13. März 2014 17:04)

Offline

#3 14. März 2014 11:11

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: 3. menü-LVL per smarty auslesen.

Ist Deine Zielstruktur wirklich richtig so?
Laut Deinem Beispiel willst Du nur die zweite Ebene in einem <div> wrappen.
Nicht die dritte.

Ich verstehe zwar nicht warum Du das so machen willst, aber so geht's:

Zunächst brauchst Du dieses number_of_levels=3 bzw. collapse=0 im Menü-Aufruf um die 3. Ebene mit ausgegeben zu bekommen.

Und dann musst Du ans Menü-Template ran (Layout -> Menu Manager).
Das mitgelieferte Template "simple_navigation.tpl" sieht im Prinzip so aus:

<li> LVL1 (1.Baum)
    <ul>
        <li> LVL2- (1.1 Nadelbaum)
            <ul>
                <li> LVL3- (1.1.1 Tanne )

Du willst also anstelle der <ul> lieber <ol> haben.
Importiere das Menü-Template "simple_navigation.tpl" in die Datenbank.
Ändere im Seitentemplate den Menü-Aufruf und füge das neue Template hinzu:

{menu loadprops=0 collapse='0' template='DeinTemplate'}

Dann suche in deinem Menü-Template nach <ul> bzw. </ul> und ändere es in <ol> bzw. </ol>.
Im Template wirst Du da z.B. sowas finden:

{repeat string="<ul>" times=$node->depth-$node->prevdepth}

bzw. das:

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

und das:

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

ändere das in:

{repeat string="<ol>" times=$node->depth-$node->prevdepth}

{repeat string="</li></ol>" times=$node->prevdepth-$node->depth}

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

Dann sieht das Menü so aus:

<li> LVL1 (1.Baum)
    <ol>
        <li> LVL2- (1.1 Nadelbaum)
            <ol>
                <li> LVL3- (1.1.1 Tanne )

Für den Fall, dass Du alle Unterebenen in ein <div> wrappen willst musst Du nun im Menü-Template an der gleichen Stelle, wo Du <ul> in <ol> geändert hast einfach das <div> davor bzw. bei </ol> das </div> dahinter setzen:

{repeat string="<div><ol>" times=$node->depth-$node->prevdepth}

{repeat string="</li></ol></div>" times=$node->prevdepth-$node->depth}

{repeat string="</li></ol></div>" times=$node->depth-1}</li>

Dann sieht das Menü so aus:

<li> LVL1 (1.Baum)
    <div>
        <ol>
            <li> LVL2- (1.1 Nadelbaum)
                <div>
                    <ol>
                        <li> LVL3- (1.1.1 Tanne )

Wenn Du aber nur bestimmte Ebenen in ein <div> wrappen willst, dann musst Du an diesen Stellen eine Abfrage nach der  Ebene machen. Hier mal das komplette modifizierte Template "simple_navigation.tpl" für die zweite Ebene:

{* 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 *}

{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}
    
    <ol>
    
    {foreach from=$nodelist item=node}
        {if $node->depth > $node->prevdepth}
            
            {if $node->depth == 2}
            
                <div>
                
            {/if}
            {repeat string="<ol>" times=$node->depth-$node->prevdepth}
            
        {elseif $node->depth < $node->prevdepth}
            {repeat string="</li></ol>" times=$node->prevdepth-$node->depth}
            {if $node->depth == 1}
            
                </div>
                
            {/if}
            
            </li>
            
        {elseif $node->index > 0}
            
            </li>
            
        {/if}
    
        {if $node->parent == true or $node->current == true}
            {assign var='classes' value='menuactive'}
            {if $node->parent == true}
                {assign var='classes' value='menuactive menuparent'}
            {/if}
            {if $node->children_exist == true and $node->depth < $number_of_levels}
                {assign var='classes' value=$classes|cat:' parent'}
            {/if}
            
            <li class="{$classes}"><a class="{$classes}" href="{$node->url}"><span>{$node->depth} - {$node->menutext}</span></a>

        {elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}
        
            <li class="parent"><a class="parent" href="{$node->url}"><span>{$node->depth} - {$node->menutext}</span></a>

        {elseif $node->current == true}
        
            <li class="currentpage"><h3><span>{$node->depth} - {$node->menutext}</span></h3>

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

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

        {else}
        
            <li><a href="{$node->url}"><span>{$node->depth} - {$node->menutext}</span></a>

        {/if}

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

{/if}

Hoffe, das ist das was Du brauchst.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline