I am using two menu modules to display parent and children items in different locations in the website header. The simplified code below shows how it is written in index.php.
I am needing to check to see if a menu item has children. If it does, the following class has-nested-nav
should be added to the <header>
div. This class will adjust the bottom padding on the header depending on if the nested nav module is displayed.
I have tested the code, but it does not yield the results I am needing. Please advise on what should be changed to get the code working.
Cheers.
Template HTML
<header class="**Add has-nested-nav class here**">
<!-- Parent menu items -->
<section>
<?php if($this->countModules('global-navigation')): ?>
<jdoc:include type="modules" name="global-navigation" />
<?php endif; ?>
</section>
<!-- Children menu items -->
<section>
<?php if($this->countModules('global-nested-navigation')): ?>
<jdoc:include type="modules" name="global-nested-navigation" />
<?php endif; ?>
</section>
</header>
Template includes/helper.php file
$hasParent = $menu->getItem( $menu->getActive()->parent_id );
if ($hasParent == 1) {
$hasNestedNav = true;
} else {
$hasNestedNav = false;
}
$mrwcNavClass = '';
if ($hasNestedNav) {
$mrwcNavClass .= ' has-nested-nav';
}
if (!defined( 'MRWC_NAV_CLASS' )) {
define( 'MRWC_NAV_CLASS', $mrwcNavClass);
}
Current Code - Not working
$active = $menu->getActive();
// $childCount = count($menu->getItems('parent_id', $active->id));
$children = $menu->getItems('parent_id', $active->id);
$visibleChildren = array_filter($children, function($child) {
return ($child->getParams('menu_show', 1) === 1);
});
$childCount = count($visibleChildren);
if ($childCount == 1) {
$hasNestedNav = true;
} else {
$hasNestedNav = false;
}
$active menu item dump
object(Joomla\CMS\Menu\MenuItem)[699]
public 'id' => string '122' (length=3)
public 'menutype' => string 'global-navigation' (length=17)
public 'title' => string 'Education' (length=9)
public 'alias' => string 'education' (length=9)
public 'note' => string '' (length=0)
public 'route' => string 'education' (length=9)
public 'link' => string 'index.php?option=com_content&view=article&id=2' (length=46)
public 'type' => string 'component' (length=9)
public 'level' => string '1' (length=1)
public 'language' => string '*' (length=1)
public 'browserNav' => string '0' (length=1)
public 'access' => string '1' (length=1)
protected 'params' =>
object(Joomla\Registry\Registry)[913]
protected 'data' =>
object(stdClass)[915]
public 'show_title' => string '' (length=0)
public 'link_titles' => string '' (length=0)
public 'show_intro' => string '' (length=0)
public 'info_block_position' => string '' (length=0)
public 'info_block_show_title' => string '' (length=0)
public 'show_category' => string '' (length=0)
public 'link_category' => string '' (length=0)
public 'show_parent_category' => string '' (length=0)
public 'link_parent_category' => string '' (length=0)
public 'show_associations' => string '' (length=0)
public 'show_author' => string '' (length=0)
public 'link_author' => string '' (length=0)
public 'show_create_date' => string '' (length=0)
public 'show_modify_date' => string '' (length=0)
public 'show_publish_date' => string '' (length=0)
public 'show_item_navigation' => string '' (length=0)
public 'show_vote' => string '' (length=0)
public 'show_icons' => string '' (length=0)
public 'show_print_icon' => string '' (length=0)
public 'show_email_icon' => string '' (length=0)
public 'show_hits' => string '' (length=0)
public 'show_tags' => string '' (length=0)
public 'show_noauth' => string '' (length=0)
public 'urls_position' => string '' (length=0)
public 'menu-anchor_title' => string 'Education' (length=9)
public 'menu-anchor_css' => string '' (length=0)
public 'menu_image' => string 'images/media/images/svg/nav-current-marker.svg' (length=46)
public 'menu_image_css' => string '' (length=0)
public 'menu_text' => int 1
public 'menu_show' => int 1
public 'page_title' => string '' (length=0)
public 'show_page_heading' => string '' (length=0)
public 'page_heading' => string 'Education' (length=9)
public 'pageclass_sfx' => string '' (length=0)
public 'menu-meta_description' => string '' (length=0)
public 'menu-meta_keywords' => string '' (length=0)
public 'robots' => string '' (length=0)
public 'secure' => int 0
protected 'initialized' => boolean true
public 'separator' => string '.' (length=1)
public 'home' => string '0' (length=1)
public 'img' => string ' ' (length=1)
public 'template_style_id' => string '0' (length=1)
public 'component_id' => string '22' (length=2)
public 'parent_id' => string '1' (length=1)
public 'component' => string 'com_content' (length=11)
public 'tree' =>
array (size=1)
0 => string '122' (length=3)
public 'query' =>
array (size=3)
'option' => string 'com_content' (length=11)
'view' => string 'article' (length=7)
'id' => string '2' (length=1)
$children menu items dump
array (size=2)
0 =>
object(Joomla\CMS\Menu\MenuItem)[726]
public 'id' => string '1544' (length=4)
public 'menutype' => string 'global-navigation' (length=17)
public 'title' => string 'Classrooms' (length=10)
public 'alias' => string 'classroom' (length=9)
public 'note' => string '' (length=0)
public 'route' => string 'education/classroom' (length=19)
public 'link' => string 'index.php?option=com_content&view=article&id=261' (length=48)
public 'type' => string 'component' (length=9)
public 'level' => string '2' (length=1)
public 'language' => string '*' (length=1)
public 'browserNav' => string '0' (length=1)
public 'access' => string '1' (length=1)
protected 'params' =>
object(Joomla\Registry\Registry)[1490]
protected 'data' =>
object(stdClass)[1492]
...
protected 'initialized' => boolean true
public 'separator' => string '.' (length=1)
public 'home' => string '0' (length=1)
public 'img' => string ' ' (length=1)
public 'template_style_id' => string '0' (length=1)
public 'component_id' => string '22' (length=2)
public 'parent_id' => string '122' (length=3)
public 'component' => string 'com_content' (length=11)
public 'tree' =>
array (size=2)
0 => string '122' (length=3)
1 => string '1544' (length=4)
public 'query' =>
array (size=3)
'option' => string 'com_content' (length=11)
'view' => string 'article' (length=7)
'id' => string '261' (length=3)
1 =>
object(Joomla\CMS\Menu\MenuItem)[725]
public 'id' => string '1545' (length=4)
public 'menutype' => string 'global-navigation' (length=17)
public 'title' => string 'In The Community' (length=16)
public 'alias' => string 'community' (length=9)
public 'note' => string '' (length=0)
public 'route' => string 'education/community' (length=19)
public 'link' => string 'index.php?option=com_content&view=article&id=262' (length=48)
public 'type' => string 'component' (length=9)
public 'level' => string '2' (length=1)
public 'language' => string '*' (length=1)
public 'browserNav' => string '0' (length=1)
public 'access' => string '1' (length=1)
protected 'params' =>
object(Joomla\Registry\Registry)[1491]
protected 'data' =>
object(stdClass)[1494]
...
protected 'initialized' => boolean true
public 'separator' => string '.' (length=1)
public 'home' => string '0' (length=1)
public 'img' => string ' ' (length=1)
public 'template_style_id' => string '0' (length=1)
public 'component_id' => string '22' (length=2)
public 'parent_id' => string '122' (length=3)
public 'component' => string 'com_content' (length=11)
public 'tree' =>
array (size=2)
0 => string '122' (length=3)
1 => string '1545' (length=4)
public 'query' =>
array (size=3)
'option' => string 'com_content' (length=11)
'view' => string 'article' (length=7)
'id' => string '262' (length=3)