Page 1 of 1

[Gelöst / Workaround] Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 7:33 am
by antiheld2000
Hi,

bei meiner Installation der Version 1.6.5 gibt es das start_level="2" Problem (Siehe hier). Die dort angegebene Lösung funktioniert leider nicht. Fragt mich nicht warum. Ist leider so. Nun bin ich hier am verzweifeln und bin betriebsblind.

Wie wandele ich denn mein bestehendes Template so um, dass es erst ab start_level 2 loslegt? Kann mir jemand mal auf die Sprünge helfen? Das wäre klasse...

Mit Dank und Gruß
anti

Code: Select all

{if $count > 0}
<div id="menuwrapper">
	<ul id="primary-nav">
		{foreach from=$nodelist item=node}
		{if $node->depth > $node->prevdepth}
		{repeat string='
		<ul class="unli">
			' 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 and $node->haschildren == true)}
		<li class="menuactive menuparent">
		<a class="menuactive menuparent" {elseif $node->current == true}
		<li class="menuactive">
		<a class="menuactive" {elseif $node->haschildren == true}
		<li class="menuparent">
		<a class="menuparent" {elseif $node->type == 'sectionheader' and $node->haschildren == true}
		<li class="sectionheader"><span class="sectionheader">{$node->menutext}</span>{elseif $node->type == 'separator'}
		<li style="list-style-type: none;">
			<hr class="menu_separator" />
			{else}
		<li><a {/if}
{if $node->type != 'sectionheader' and $node->type != 'separator'}
			{if $node->target}target="{$node->target}" {/if}
			href="{$node->url}">
			{if $node->haschildren == true}<strong>{else}{/if}
			<span>{$node->menutext}</span>
			{if $node->haschildren == true}</strong>{/if}
			</a> {elseif $node->type == 'sectionheader'}
			><span class="sectionheader">{$node->menutext}</span>
			{if $node->haschildren == true}</strong>{/if}
			</a> {/if}
			{/foreach}
			{repeat string='</li>
	</ul>
	' times=$node->depth-1}
	</li>
	</ul>
	<div class="clearb"></div>
</div>
{/if}

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 8:50 am
by antibart
Ich hatte das Problem auch nach dem Upgrade eines Projektes von 1.5.4 auf 1.6.5. Als Template benutze ich simple-navigation.

Bei mir hat die oben genannte Lösung aber prima geklappt ...

Sicher, dass du es genau so wie beschrieben  gemacht hast?

Poste doch mal deinen-Codeschnipsel aus der action.default.php aus dem Menümanager.

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 8:54 am
by antiheld2000

Code: Select all

			if( $curcontent )  {
			  $properparentpos = $this->nthPos($curcontent->Hierarchy() . '.', '.', intval($params['start_level']) - 1);
			  if ($properparentpos > -1)
			  {
			    $prevdepth = intval($params['start_level']);
			    $rootnode =& $hm->getNodeByHierarchy(substr($curcontent->Hierarchy(), 0, $properparentpos));
			  }
                        }

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 8:58 am
by RonnyK

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 9:01 am
by antibart
Das Problem, dass  er - wie der Code beweist - diese Modifikation schon gemacht hat.


Da weiß ich aber ehrllich gesagt auch nicht weiter ...

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 9:03 am
by RonnyK
OK, sorry... hatte die Link nicht gesehen....

Ronny

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 9:04 am
by antiheld2000
Ich weiss auch nicht wirklich weiter, deswegen bin ich auf der Suche nach einer einfach templatebasierten Lösung. Hierzu brummt mir aber irgendwie gerade zu doll der Schädel...

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 9:12 am
by antibart
antiheld2000 wrote: Ich weiss auch nicht wirklich weiter, deswegen bin ich auf der Suche nach einer einfach templatebasierten Lösung. Hierzu brummt mir aber irgendwie gerade zu doll der Schädel...
Das kann es aber ja nicht sein. Der Menümanager und die Parameter sollen diese Aufgaben übernehmen, sonst würde der Sinn des Ganzen verloren gehen.

Du könntest noch mal den tag zum Menüaufruf posten - vielleicht bloß ein kleiner Tippfehler ...

Hattest Du das Menu-Template denn schon mal bearbeitet.

Zur Not speichere es noch mal und setz es danach mal testweise auf die Werkseinstellung zurück.

Oder probier mein funktionierendes:

Code: Select all

{* 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><a class="currentpage" 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->parent == true}
<li class="activeparent"><a class="activeparent" 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;"> |


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

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 9:32 am
by RonnyK
Antiheld,

du bist sicher das die losung in genannten Topic bei dir aktief ist... Hast du gepruft ob die anderung auf den server steht....

Ronny

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 11:21 am
by antiheld2000
Ich habe gerade diverse Templates mit diversen Aufrufen probiert. Wenn ich start_level="2" mit einfüge, wird das Menü einfach nicht gerendert und es erscheint rein gar nichts im HTML Code. Auch mit deinem Template, antibart, und den default Templates.

@ Ronny: Der aktualisierte Code liegt definitiv so auf dem Server.

Fragt mich nicht...

Re: Menu -> start_level 2 Problem

Posted: Wed Sep 16, 2009 11:39 am
by RonnyK
Um sicher su sein....

Kannst du mich mal den code von den server im PM schicken...

Ronny

Re: Menu -> start_level 2 Problem

Posted: Fri Sep 18, 2009 8:46 am
by antiheld2000
Ich hab nun einen Workaround auf Template-Basis erstellt, da dies die einzige Installation ist, bei der der Fehler auftritt und ich mal auf das nächste Update baue, ist das für mich eine gute Lösung. Einfach im Menü-Template direkt nach den {foreach} dies hier einfügen:
{if $node->depth != 1} und dann direkt vor dem {/foreach} logischerweise noch {/if} einfügen. Dann funktioniert es. Vielen Dank für Eure Mühen.

Gruß
anti