Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 04. Dezember 2013 13:51
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
[GELÖST] MenuManager $node->last wird doppelt vergeben
Hallo zusammen,
bei einem Projekt nutze ich im Menü-Template die Variable "$node->last" um jeweils den letzten Menüpunkt eines Untermenüs anders zu gestalten. Leider ist die Seite noch nicht offiziell online. Hier grob die Struktur:
Punkt 1
Punkt 1.1
Punkt 1.2
Punkt 1.3
Punkt 2
Punkt 2.1
Punkt 2.1.1
Punkt 2.1.2
Punkt 2.2
Punkt 2.2.1
Punkt 2.2.2
Punkt 2.3
Punkt 2.4
Normalerweise sollten nun Punkt 1.3, Punkt 2.1.2, Punkt 2.2.2 und Punkt 2.4 ein "ja" bei $node->last ausgeben.
Das tun sie auch. Allerdings bekomme ich, wenn ich auf eine Punkt 2.1 (oder seine Unterseiten) gehe, zusätzlich auch bei Punkt 2.3 ein "ja" bei $node->last und somit einen Fehler im Layout.
Gehe ich auf Punkt 2.2 (oder Unterseiten) passiert dies nicht.
Stehe mit einem großen Fragezeichen über dem Kopf da.
Es ist definitiv kein Fehler in der CSS-Datei da die Klasse einfach doppelt (bei zwei aufeinander folgenden Punkten) zugeordnet wird.
Hier mal das Menü-Template:
[== smarty ==]
{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 name=menuitem}
{if $node->hierarchy|substr:2:1 == '1'}
{assign var="company_menu" value="group"}
{elseif $node->hierarchy|substr:2:1 == '2'}
{assign var="company_menu" value="tools"}
{elseif $node->hierarchy|substr:2:1 == '3'}
{assign var="company_menu" value="automotive"}
{elseif $node->hierarchy|substr:2:1 == '4'}
{assign var="company_menu" value="cable"}
{else}
{assign var="company_menu" value="none"}
{/if}
{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}
{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} {$company_menu}"><a class="{$classes}{if $node->last} last-menu-item{/if}" href="{$node->url}" title="{$node->menutext}"><span>{$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 {$company_menu}"><a class="parent" href="{$node->url}" title="{$node->menutext}"><span>{$node->menutext}</span></a>
{elseif $node->current == true}
<li class="currentpage"><a href="{$node->url}" title="{$node->menutext}"><span>{$node->menutext}</span></a>
{elseif $node->type == 'sectionheader'}
<li class="sectionheader"><a href="{$node->url}" title="{$node->menutext}"><span>{$node->menutext}</span></a>
{elseif $node->type == 'separator'}
<li class="separator" style="list-style-type: none;"> <hr />
{else}
<li class="{$company_menu}"><a class="{$company_menu}{if $node->last} last-menu-item{/if}" href="{$node->url}" title="{$node->menutext}"><span>{$node->menutext}</span></a>
{/if}
{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
Offline
#2 29. Januar 2014 16:18
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] MenuManager $node->last wird doppelt vergeben
Hallo noch mal,
leider habe ich immer noch keine Lösung für das Problem gefunden.
Liegt es wohl eher am Template oder eher an CMSms? Ich vermute eher CMSms.
Offline
#3 29. Januar 2014 19:47
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] MenuManager $node->last wird doppelt vergeben
Ja, es liegt an CMSms.
In dem "Zweig" des Menüs wo der Fehler auftrat waren zwei Seiten deaktiviert. Nachdem ich sie gelöschte habe, funktioniert alles wie es soll.
Dies ist zwar ein Workaround, aber sicher nicht im Sinne des Erfinders. Vor allem wenn ich mir vorstelle, dass der Redakteur der Seite nun evtl. andere Seiten deaktiviert und der Fehler wieder unkontrollierbar auftritt.
Ob ein Feedback etwas bringt, wage ich zu bezweifeln, da andere Feedbacks zum Menümanager meist mit dem Kommentar "In 2.0 wird alles besser" geschlossen wurden.
Offline
#4 29. Januar 2014 20:09
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] MenuManager $node->last wird doppelt vergeben
Hast du schon versucht, dies via Smarty last anzufangen (wäre dann wohl {$node@last}?
Offline
#5 29. Januar 2014 20:50
- jeff1980
- Server-Pate
- Ort: Dortmund
- Registriert: 26. November 2010
- Beiträge: 630
Re: [GELÖST] MenuManager $node->last wird doppelt vergeben
Ja, allerdings wird dann nur die wirklich letzte Seite auch als letzte Seite erkannt und nicht die jeweils letzte Unterseite. Hat mich auch gewundert, da ich diesen Tipp auf i-do-this gesehen habe.
In o.g. Beispiel würde nur die 2.4 als letzte Seite erkannt werden.
Offline
Seiten: 1