I am trying to add class to the top menu item in Magento. I was able to add class to the <li> tag by overriding the Topmenu.php file. Now I want to add a class to the <a> tag too. Below is the Topmenu.php content. I have added the class nav-item to the <li> tag and it works. Similarly, I want to add a class to the <a> tag under the <li>
<?php namespace Ecommerce\Menu\Block\Html; class Topmenu extends \Magento\Theme\Block\Html\Topmenu { protected function _getMenuItemClasses(\Magento\Framework\Data\Tree\Node $item) { $classes = []; $classes[] = 'level' . $item->getLevel(); $classes[] = $item->getPositionClass(); if ($item->getIsFirst()) { $classes[] = 'first'; } if ($item->getIsActive()) { $classes[] = 'active'; } elseif ($item->getHasActive()) { $classes[] = 'has-active'; } if ($item->getIsLast()) { $classes[] = 'last'; } if ($item->getClass()) { $classes[] = $item->getClass(); } if ($item->hasChildren()) { $classes[] = 'parent'; } $classes[] = 'nav-item'; return $classes; } }
Hello @akhilesh4u66f7
If you need to add the class in the <a> tag under the <li> then you can override _getHtml(). and you can change the below code:
$html .= '<a class="CLASS_NAME level-top" href="' . $child->getUrl() . '" ' . $outermostClassCode . '><span>' . $this->escapeHtml( $child->getName() ) . '</span></a>' . $this->_addSubMenu( $child, $childLevel, $childrenWrapClass, $limit ) . '</li>';
Note: Please replace "CLASS_NAME" with your actual class name and please don't remove the "level-top" class name.
If you find our reply helpful, please give us kudos.
A Leading Magento Development Agency That Delivers Powerful Results, Innovation, and Secure Digital Transformation.
WebDesk Solution Support Team
Get a Free Quote | | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Thank You,
WebDesk Solution Support Team
Get a Free Quote | Email | Adobe Commerce Partner | Hire Us | Call Us 877.536.3789
Location: 150 King St. W. Toronto, ON M5H 1J9