Menumanager vind child van active parent

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
User avatar
timdebuurman
Power Poster
Power Poster
Posts: 891
Joined: Sun Nov 06, 2011 8:15 pm
Location: Deventer, Netherlands

Menumanager vind child van active parent

Post by timdebuurman »

Hoi,

In de menumanager heb ik het nodig om te bepalen of een sub-item een 'child' is van een actieve 'parent'.

Die optie zit er standaard niet in zo te zien en ik vraag me af hoe ik dit toch kan bepalen.

Dit omdat ik het submenu anders wil maken zodra ik op een actieve pagina ben.

Hopelijk leg ik het goed genoeg uit zo...

gr Tim
NextDoorMedia - Online Marketing Partner
https://www.nextdoormedia.nl
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Menumanager vind child van active parent

Post by Rolf »

Je zou dit met een Smarty vergelijking in het menu template prima kunnen maken.
Heb even geen tijd om het te proberen...
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
User avatar
timdebuurman
Power Poster
Power Poster
Posts: 891
Joined: Sun Nov 06, 2011 8:15 pm
Location: Deventer, Netherlands

Re: Menumanager vind child van active parent

Post by timdebuurman »

Misschien mis ik dan net de (smarty-)kennis om dat voor elkaar te krijgen.

Het zou fijn zijn als je hier later nog naar wilt kijken.
NextDoorMedia - Online Marketing Partner
https://www.nextdoormedia.nl
User avatar
Rolf
Dev Team Member
Dev Team Member
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Location: The Netherlands
Contact:

Re: Menumanager vind child van active parent

Post by Rolf »

Voer voor een nieuwe tutorial lijkt me :)
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Menumanager vind child van active parent

Post by velden »

Als voorbeeld het Simple Navigation navigator template:

Code: Select all

{function name=Nav_menu depth=1}{strip}
<ul>
  {foreach $data as $node}
{if $activeparent}<!-- ACTIVEPARENT -->{/if} {* <-- deze regel toevoegen als test *}
    {* setup classes for the anchor and list item *}
...

{if isset($node->children)}
          {Nav_menu data=$node->children depth=$depth+1 activeparent=$node->current} {* voeg de activeparent parameter toe*}
        {/if}
    ...
        {if isset($node->children)}
          {Nav_menu data=$node->children depth=$depth+1 activeparent=$node->current} {* voeg de activeparent parameter toe*}
        {/if}

Merk op dat dit maar één level diep doorwerkt. Dus enkel de directe childs van de actieve node. Als je het dieper wilt (dus ook weer children van de children) dan moet je het een klein beetje aanpassen.
User avatar
timdebuurman
Power Poster
Power Poster
Posts: 891
Joined: Sun Nov 06, 2011 8:15 pm
Location: Deventer, Netherlands

Re: Menumanager vind child van active parent

Post by timdebuurman »

Bedankt voor het meedenken.
Ik zit in dit geval nog op een 1.12.2 versie (vanwege het nog niet compatible zijn van enkele nodige modules)

Hierbij ziet de standaard (simple navigation) er zo uit:

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

{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}
  {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->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->menutext}</span></a>

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

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

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

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

{/if}

{/foreach}
{repeat string="</li></ul>" times=$node->depth-1}</li>
</ul>
{/if}
Zou je daarin kunnen laten zien hoe de 'child' van de 'active parent' bepaald kan worden?
NextDoorMedia - Online Marketing Partner
https://www.nextdoormedia.nl
User avatar
velden
Dev Team Member
Dev Team Member
Posts: 3483
Joined: Mon Nov 28, 2011 9:29 am
Location: The Netherlands

Re: Menumanager vind child van active parent

Post by velden »

Waarschijnlijk wel met veel werk.

Er is een reden dat er voor de nieuwe Navigator is gekozen, en zoals je ziet maakt die dergelijke zaken veel eenvoudiger.
User avatar
timdebuurman
Power Poster
Power Poster
Posts: 891
Joined: Sun Nov 06, 2011 8:15 pm
Location: Deventer, Netherlands

Re: Menumanager vind child van active parent

Post by timdebuurman »

Oke, bedankt voor het meedenken.
Ik heb het voor nu op kunnen lossen met Javascript, die de href van een submenu item aanpast als de parent een active klasse heeft.

Niet de mooiste oplossing, maar het werkt voor nu.
NextDoorMedia - Online Marketing Partner
https://www.nextdoormedia.nl
Post Reply

Return to “Dutch - Nederlands”