$node->haschildren always returns true

For discussion and questions related to CMS Specific templates and stylesheets (CSS), and themes. or layout issues. This is not a place for generic "I don't know CSS issues"
Post Reply
lacertus2
New Member
New Member
Posts: 7
Joined: Sun Oct 17, 2010 4:31 am

$node->haschildren always returns true

Post by lacertus2 »

$node->haschildren always returns true. Why?

In this example, #menu2 is always shown regardless if the page has subpages or not.

God this CMS drives me nuts.

Code: Select all

{if $count > 0}
{assign var="test1" value="test"}
{assign var="test2" value="test1"}

<div class="menus">
	{foreach from=$nodelist item=node1}

		{if $test1 == "test"}
			<ul id="menu1">	
				{foreach from=$nodelist item=node}
						{if $node->depth == 1}
		
							{if $node->current == true}
								<li><a class="selected" href="{$node->url}">{$node->menutext} {$node->prevdepth}</a></li>
							{else}
								<li><a href="{$node->url}">{$node->menutext} {$node->haschildren} </a></li>
							{/if}
							
					
						{/if}
						{if $node->haschildren == true}
						 	{assign var="test2" value="test"}
						{/if}

				{/foreach}
			</ul>
			{assign var="test1" value="test1"}
		{/if}
		
	    {if $test2 == "test"}
			<ul id="menu2">
				{foreach from=$nodelist item=node}
								
					{if $node->depth == 2}
					
								{if $node->current == true}
									<li><a class="selected" href="{$node->url}">{$node->menutext}</a></li>
								{else}
									<li><a href="{$node->url}">{$node->menutext}</a></li>
								{/if} 
					
					{/if}
									
				{/foreach}
			</ul>
			{assign var="test2" value="test1"}
		{/if}
	{/foreach}
</div>				
{/if}
<br style="clear:both;">
User avatar
Dr.CSS
Moderator
Moderator
Posts: 12711
Joined: Thu Mar 09, 2006 5:32 am

Re: $node->haschildren always returns true

Post by Dr.CSS »

I think maybe you are driving yourself nuts, I've made at least 100 menu templates of all sorts and have never had as much trouble as you seem to be having...

If you gave a live example or even an image example of what you are looking for I'm sure it can be worked out...
lacertus2
New Member
New Member
Posts: 7
Joined: Sun Oct 17, 2010 4:31 am

Re: $node->haschildren always returns true

Post by lacertus2 »

Sorry. I suck at smarty. You probably (or don't) know the frustration of working with something for days and getting nowhere.

Okay, so this is what I want. I've changed it a bit from the previous thread.

I have 3 levels. If the current page has a sub-page, the submenu is shown. If the current page has no children, nothing is shown. Also, all parent(s) should all have the class "selected".

Image

Code: Select all

<ul id="menu1">
   <li><a href="page">Home</a></li>
   <li><a href="page" class="selected">Projects</a></li>
   <li><a href="page">About</a></li>
</ul>

<ul id="menu2"> 
   <li><a href="page">Project 1</a></li>
   <li><a href="page">Project 2</a></li>
   <li><a href="page" class="selected">Project 3</a></li>
</ul>

<ul id="menu3"> 
   <li><a href="page" class="selected">Source code</a></li>
   <li><a href="page">Download</a></li>
</ul>
Last edited by lacertus2 on Thu Oct 21, 2010 12:35 am, edited 1 time in total.
lacertus2
New Member
New Member
Posts: 7
Joined: Sun Oct 17, 2010 4:31 am

Re: $node->haschildren always returns true

Post by lacertus2 »

Nobody?
User avatar
Dr.CSS
Moderator
Moderator
Posts: 12711
Joined: Thu Mar 09, 2006 5:32 am

Re: $node->haschildren always returns true

Post by Dr.CSS »


{menu number_of_levels='1'}


{menu start_level='2' number_of_levels='1'}


{menu start_level='3' number_of_levels='1'}


Or just the menu calls w/o divs if wanted...
Post Reply

Return to “Layout and Design (CSS & HTML)”