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

#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