Restricting Category Menu to two levels
4 posts by 2 authors in: Forums > CMS Builder
Last Post: August 30, 2010 (RSS)
Hi there, having problems getting my navmenu to restrict to two levels. Currently showing all (3 levels).
Any suggestions?
Many thanks
Jan
Any suggestions?
<?php
// load records
list($pagesRecords, $pagesMetaData) = getCategories(array(
'tableName' => 'pages',
'categoryFormat' => 'twolevel',
));
?>
<ul>
<?php $inactiveChild=0; ?>
<?php $childCount=0; ?>
<?php foreach ($pagesRecords as $record): ?>
<?php if($record['active']==1 && $record['hide']==0): ?>
<?php if($inactiveChild && !$record['_hasParent']): ?></ul></li><?php endif ?>
<?php if($record['_hasParent']): ?><?php $childCount++; ?><?php else:?><?php $childCount=0;?><?php endif ?><?php $inactiveChild=0; ?>
<?php echo $record['_listItemStart']; ?><?php
$queryString = str_replace(" ","-",$record['url'])."-".$record['num'];
$queryString = strtolower($queryString);
?><a href="/<?php echo $queryString;?>/"><?php echo htmlspecialchars($record['name']);?></a><?php echo $record['_listItemEnd'];?>
<?php else: ?>
<?php if($record['_hasParent'] && $childCount==0): ?><ul><?php $childCount++; ?><?php endif ?>
<?php if($record['_hasParent']): ?><?php $inactiveChild=1;?><?php else: ?><?php $inactiveChild =0; ?><?php endif ?>
<?php endif ?>
<?php endforeach ?>
</ul>
Many thanks
Jan
Re: [aquaman] Restricting Category Menu to two levels
Just discovered the third level is only showing when its parent is selected - if that helps.
Thanks
Jan
Thanks
Jan
Re: [aquaman] Restricting Category Menu to two levels
By Chris - August 30, 2010
Hi Jan,
You can skip categories which are deeper than the second level by adding a line of code right after your foreach which checks the 'depth' field. Since depth starts at 0, you'll want to skip anything > 1:
I hope this helps! Please let me know if you have any questions.
You can skip categories which are deeper than the second level by adding a line of code right after your foreach which checks the 'depth' field. Since depth starts at 0, you'll want to skip anything > 1:
<?php foreach ($pagesRecords as $record): ?>
<?php if ( $record['depth'] > 1 ) { continue; } ?>
I hope this helps! Please let me know if you have any questions.
All the best,
Chris
Chris
Re: [chris] Restricting Category Menu to two levels
Hi Chris, Perfect! thanks so much!!