How to display all the categories in tree structure alike in a pop up window ie.) if i click the select category button in my page it should show the popup window with the tree
structured categories.i tried like this which will show all the categories in dropdown that does not look good
<?php
$categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*')->addIsActiveFilter();
$allcatid = array();
$k=0;
foreach ($categories as $c) {
$allcatid[$k] = $c->getId();
$k++;
}
$finalcat=array_shift($allcatid);
$root= Mage::app()->getStore()->getRootCategoryId();
?>
<select id="category" class="myinput-text required-entry widthinput" name="category" >
<?php foreach($allcatid as $keycat){?>
<option value="<?php echo $keycat;?>"><?php echo Mage::getModel("catalog/category")->load($keycat)->getName(); ?></option>
<?php } ?>
This will help you to fetch you category tree
<?php
$rootcatId= Mage::app()->getStore()->getRootCategoryId();
$categories = Mage::getModel('catalog/category')->getCategories($rootcatId);
function get_categories($categories) {
$array= '<ul>';
foreach($categories as $category) {
$cat = Mage::getModel('catalog/category')->load($category->getId());
$count = $cat->getProductCount();
$array .= '<li>'.''. $category->getName() . "(".$count.")\n";
if($category->hasChildren()) {
$children = Mage::getModel('catalog/category')->getCategories($category->getId());
$array .= get_categories($children);
}
$array .= '</li>';
}
return $array . '</ul>';
}
echo get_categories($categories); ?>
Output View
This code is included an end-level category with product count.
Step 1 Goto theme/layout/catalog.xml put this code in the file.
<reference name="left">
<block type="catalog/navigation" name="category_list_sidebar" template="catalog/navigation/categorymenu.phtml"/>
</reference>
Step 2 Goto theme/template/catalog/ and create navigation folder also create categorymenu.phtml file inside folder and put code into file.
<?php
$_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories();
$currentCategory = Mage::registry('current_category');
?>
<div class="block block-list block-categorys">
<div class="block-title">
<strong><span>Category</span></strong>
</div>
<div class="block-content">
<ul class="category_sub">
<?php
if (count($_categories) > 0){
global $index;
global $data;
foreach($_categories as $_category){
$check_child_class = check_child_par($_category->getId());
$collaps = ($check_child_class)? "<span class='show-cat'>+</span>" : "";
echo "<li class='".$check_child_class."'>";
echo "<a href='".$_helper->getCategoryUrl($_category)."'>".$_category->getName();
echo " (".product_count($_category->getId()).")";
echo "</a>".$collaps;
echo check_child($_category->getId());
echo "</li>";
}
}
?>
</ul>
</div>
</div>
<?php
function check_child($cid){
$_helper = Mage::helper('catalog/category');
$_subcategory = Mage::getModel('catalog/category')->load($cid);
$_subsubcategories = $_subcategory->getChildrenCategories();
if (count($_subsubcategories) > 0){
echo "<ul>";
foreach($_subsubcategories as $_subcate){
$check_child_class = check_child_par($_subcate->getId());
$collaps = ($check_child_class)? "<span class='show-cat'>+</span>" : "";
echo "<li class='".$check_child_class."'>";
echo "<a href='".$_helper->getCategoryUrl($_subcate)."'>".$_subcate->getName();
echo " (".product_count($_subcate->getId()).")";
echo "</a>".$collaps;
echo check_child($_subcate->getId());
echo "</li>";
}
echo "</ul>";
}else{
return "";
}
}
function check_child_par($cid){
$_subcat = Mage::getModel('catalog/category')->load($cid);
$_subsubcats = $_subcat->getChildrenCategories();
if (count($_subsubcats) > 0){
return "parent";
}else{
return "";
}
}
function product_count($cid){
$products_count = Mage::getModel('catalog/category')->load($cid)->getProductCount();
return $products_count;
}
?>
enter code here
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<?php echo $_category->getName() ?>
</a>
<?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul>
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
this will fetch all catgory and sub category,,,hope this will help you
Related
I am trying to display 3 levels of hierarchical menu in WordPress
using wp_get_nav_menu_items function, but somehow the structure is not
displaying in that manner.
This is my code which I have included in header file, but the structure is not proper.
$menu_name = 'primary-menu';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object($locations[$menu_name]);
$menuitems = wp_get_nav_menu_items($menu->term_id, array('order' => 'DESC'));
$ParentArray = array();
foreach ($menuitems as $item) {
// if (!empty($item->menu_item_parent) && !in_array($item->menu_item_parent, $ParentArray)) {
array_push($ParentArray, $item->ID);
// }
}
?>
<nav>
<ul class="main-nav">
<?php
$count = 0;
$submenu = false;
foreach ($menuitems as $item):
$link = $item->url;
$title = $item->title;
// item does not have a parent so menu_item_parent equals 0 (false)
if (!$item->menu_item_parent):
// save this id for later comparison with sub-menu items
$parent_id = $item->ID;
?>
<li class="item">
<a href="
<?php echo $link; ?>" class="title">
<?php echo $title; ?>
</a>
<?php endif; ?>
<?php if (in_array($item->menu_item_parent, $ParentArray)): ?>
<?php if (!$submenu): $submenu = true; ?>
<ul class="sub-menu">
<?php endif; ?>
<li class="item">
<a href="
<?php echo $link; ?>" class="title">
<?php echo $title; ?>
</a>
</li>
<?php if (!isset($menuitems[$count + 1]) || $menuitems[$count + 1]->menu_item_parent != $parent_id && $submenu): ?>
</ul>
<?php
$submenu = false;
endif;
?>
<?php endif; ?>
<?php if (!isset($menuitems[$count + 1]) || $menuitems[$count + 1]->menu_item_parent != $parent_id): ?>
</li>
<?php
$submenu = false;
?>
<?php
$count++;
endforeach;
?>
</ul>
</nav>
After making changes in above code,this things work for me.
$menu_name = 'primary-menu';
$locations = get_nav_menu_locations();
$menu = wp_get_nav_menu_object($locations[$menu_name]);
$menuitems = wp_get_nav_menu_items($menu->term_id, array('order' => 'DESC'));
$ParentArray = array();
foreach ($menuitems as $item) {
// if (!empty($item->menu_item_parent) && !in_array($item->menu_item_parent, $ParentArray)) {
array_push($ParentArray, $item->ID);
// }
}?>
<nav>
<ul class="main-nav">
<?php
$count = 0;
$submenu = false;
foreach ($menuitems as $item):
$link = $item->url;
$title = $item->title;
// item does not have a parent so menu_item_parent equals 0 (false)
if (!$item->menu_item_parent):
// save this id for later comparison with sub-menu items
$parent_id = $item->ID; ?>
<li class="item">
<a href="
<?php echo $link; ?>" class="title">
<?php echo $title; ?>
</a>
<?php endif; ?>
<?php if (in_array($item->menu_item_parent, $ParentArray)): ?>
<?php if (!$submenu): $submenu = true; ?>
<ul class="sub-menu">
<?php endif; ?>
<li class="item">
<a href="
<?php echo $link; ?>" class="title">
<?php echo $title; ?>
</a>
</li>
<?php if (!isset($item[$count + 1]) || $item[$count + 1]->menu_item_parent != $parent_id && $submenu): ?>
</ul>
<?php
$submenu = false;
endif;
?>
<?php endif; ?>
<?php if (!isset($menuitems[$count + 1]) || $menuitems[$count + 1]->menu_item_parent != $parent_id): ?>
</li>
<?php
$submenu = false;
?>
<?php
$count++;
endforeach;
?>
</ul>
</nav>
I need a custom categories menu in magento. and i want a active class on active category. when i click on category then that category should be add active class.
(i) First of all create your custom category from admin panel
(ii)Then pass the category id in getCategories() function in code
Try this code,it works for me.I hope this work for you.
<?php
$children = Mage::getModel('catalog/category')->getCategories(2);
?>
<div class="menusecond">
<ul id="second menu">
<?php
foreach ($children as $category) { ?>
<li class="mymenu">
<?php $catId = $category->getId(); ?>
<?php $cat = Mage::getModel('catalog/category')->load($catId); ?>
<a href="<?php echo $cat->getUrl(); ?>">
<?php echo $cat->getName(); ?>
</a>
</li>
<?php
}
?>
</ul>
</div>
I found the solution. we can identify current category by category getUrlKey.
<?php
$_helper = Mage::helper('catalog/category');
$_categories = Mage::getResourceModel('catalog/category_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('is_active', 1) //only active categories
->addAttributeToFilter('include_in_menu', 1);
$currentCategory = Mage::registry('current_category') ;
$rootCategoryId = Mage::app()->getStore()->getRootCategoryId();
$rootCategory = Mage::getModel('catalog/category')->load($rootCategoryId);
$childIds = explode(',',$rootCategory->getChildren()); ?>
<div class="row">
<?php if (count($childIds) > 0): ?>
<ul>
<?php foreach($childIds as $_category):
$_category = Mage::getModel('catalog/category')->load($_category); ?>
<?php if ($_category->getIncludeInMenu()) { ?>
<?php $allsubchild = explode(',',$_category->getChildren());?>
<?php foreach($allsubchild as $_sub): ?>
<?php endforeach; ?>
<li class="<?php if (strpos($_SERVER['REQUEST_URI'], $_category->getUrlKey()) !== false){ echo "active";} ?>">
<?php echo $_category->getName() ?>
<?php } ?>
<ul>
<?php $ss = 0; foreach($allsubchild as $_sub):
$_subcategory = Mage::getModel('catalog/category')->load($_sub);
?>
<?php if ($_subcategory->getIncludeInMenu()) { ?>
<?php
$uri = $_category->getUrlKey();
$uri .= "/";
$uri .= $_subcategory->getUrlKey(); // echo $uri; ?>
<li class="<?php if($_subcategory->getChildrenCount()) { echo "has-dropdown1"; }?> <?php if (strpos($_SERVER['REQUEST_URI'], $uri) !== false){ echo "active";} ?>">
<?php echo $_subcategory->getName(); ?>
<?php $suren = explode(',',$_subcategory->getChildren());?>
<ul>
<?php
foreach($suren as $suren1){
$suren11 = Mage::getModel('catalog/category')->load($suren1);
$_suren1id = $suren11->getId();
$internet_count = Mage::getModel('catalog/category')->load($_suren1id)->getProductCount();
if ($internet_count > 0) {
if ($suren11->getIncludeInMenu()) { ?>
<?php
$uri1 = $uri;
$uri1 .= "/";
$uri1 .= $suren11->getUrlKey(); // echo $uri1; ?>
<li>
<a class="<?php if (strpos($_SERVER['REQUEST_URI'], $uri1) !== false){ echo "active";} ?>" href="<?php echo $suren11->getUrl(); ?>" title="<?php echo $suren11->getName(); ?>"><?php echo $suren11->getName(); ?></a>
</li>
<?php } ?>
<?php } ?>
<?php } ?>
</ul>
</li>
<?php }?>
<?php $ss++; endforeach; ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
Goto app/design/frontend/rwd/default/template/page/html and open topmenu.phtml file. find this code <?php if($_menu): ?>
<nav id="nav">
<ol class="nav-primary">
<?php echo $_menu ?>
</ol>
</nav>
<?php endif ?>
this code will output you the categories in the form of top menu if you don't use any categories hide this code or else paste this code before or after this code.
<ul>
<li>HOME</li>
<li>ABOUT US</li>
<li>your_page_name</li>
<li>your_page_name</li>
</ul>
How to Extend Category Level in Magento Frontend Site:
Insert this code* under the First Level of the category. In my case, the site's category navbar is located on header.phtml
*The code starts at: Level 2nd Start
*improving this code is highly appreciated.
(mikequibin/app/design/frontend/mikequibin/default/template/page/html/header.phtml)
<div class="header-category-menu" style="background: none;">
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::getSingleton('catalog/layer')->getCurrentCategory()->getId(); ?>
<?php if (count($_categories) > 0): ?>
<div class="menu-bg">
<ul class="menu clearfix">
<?php foreach($_categories as $_category): ?>
<?php $class = 'link'; ?>
<?php if($_category->getEntityId() == 13 || $_category->getEntityId() == 36): ?>
<?php $class = 'link sale'; ?>
<?php endif; ?>
<?php $class .= $currentCategory==$_category->getEntityId() ? ' active' : NULL; ?>
<li class="<?php echo $class; ?> menu-nav" data-id="<?php echo $_category->getId(); ?>">
<?php if($_category->getId() != 36) : ?>
<i class="icon-caret-down"></i>
<?php endif; ?>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<span><?php echo $_category->getName() ?></span>
</a>
<!-- First Level Start --!>
<?php
$subCategories = Mage::getModel('catalog/category')->load($_category->getId());
$subCategories = $subCategories->getChildrenCategories();
?>
<?php if(count($subCategories) != 0): ?>
<ul class="submenu">
<?php foreach($subCategories as $i => $subCategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($subCategory); ?>">
<i class="icon-chevron-right"></i><?php echo $subCategory->getName(); ?>
<!-- Second Level Start --!>
<?php if($_category->getIsActive()): ?>
<?php
$subCategories2 = Mage::getModel('catalog/category')->load($subCategory->getId());
$subCategories2 = $subCategories2->getChildrenCategories();
?>
<?php if(count($subCategories2) != 0): ?>
<?php foreach($subCategories2 as $k => $subCategory2): ?>
<li style="padding-left:20px;">
<a href="<?php echo $_helper->getCategoryUrl($subCategory2); ?>">
<?php echo $subCategory2->getName(); ?>
<!-- Third Level Start --!>
<?php if($_category->getIsActive()): ?>
<?php
$subCategories3 = Mage::getModel('catalog/category')->load($subCategory2->getId());
$subCategories3 = $subCategories3->getChildrenCategories();
?>
<?php if(count($subCategories3) != 0): ?>
<?php foreach($subCategories3 as $l => $subCategory3): ?>
<li style="padding-left:30px;">
<a href="<?php echo $_helper->getCategoryUrl($subCategory3); ?>">
<?php echo $subCategory3->getName(); ?>
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
<!-- Third Level End --!>
</a>
</li>
<?php endforeach; ?>
<?php endif; ?>
<?php endif; ?>
<!-- Second Level End --!>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- First Level End --!>
</li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
</div>
$_helper = Mage::helper('catalog/category');
$_categories = $_helper->getStoreCategories();
$html = '';
if (count($_categories) > 0) {
$html .= '<ul>';
foreach($_categories as $_category) {
$html .= '<li>';
$html .= ''.$_category->getName().'';
$html .= getRecursiveHtml($_category);
$html .= '</li>';
}
$html .= '</ul>';
}
function getRecursiveHtml($_category,$html='') {
$_category = Mage::getModel('catalog/category')->load($_category->getId());
$child = $_category->getChildrenCategories();
if (count($child) > 0) {
$html .= '<ul>';
foreach($child as $_child) {
$html .= '<li>';
$html .= ''.$_child->getName().'';
$html = getRecursiveHtml($_child,$html);
$html .= '</li>';
}
$html .= '</ul>';
}
return $html;
}
echo $html;
I have this kind of categories in magenta:
-MotoCross
->Parts1 ->sub-parts
->Parts2 ->sub-parts
->Parts3 ->sub-parts
-Quad
->Parts1 ->sub-parts
->Parts2 ->sub-parts
->Parts3 ->sub-parts
For now i have MotoCross and Quad printed on screen and their child (parts1,2,3) but I would like to have Part1 and them sub parts printed on screen.
I don't know how to do, see my code bellow:
---------------------------EDIT---------------------------
Now I have the current category categories, but i don't know how two have current category categories categories. You're still here ? :P
<?php
$object = new Mage_Catalog_Block_Navigation();
$actualCategoryId = $object->getCurrentCategory()->getId();
$actualCategory = Mage::getModel('catalog/category')->load($actualCategoryId);
$subCategories = explode(',', $actualCategory->getChildren());
?>
<div id="categories_list">
<ol>
<?php
foreach ( $subCategories as $subCategoryId )
{
$category = Mage::getModel('catalog/category')->load($subCategoryId);
if ( $category->getIsActive() )
{ ?>
<li class="second_level_cat">
<?php
echo ''.$category->getName().' ';
?>
</li>
<?php
}
}
?>
</ol>
</div>
Thanks for your help.
It's something like this.
<div id="categories_list">
<ol>
<?PHP foreach ($catIds as $cid): ?>
<?PHP $_category = Mage::getModel('catalog/category')->load($cid); ?>
<?PHP if($_category->getLevel() == 2 ) : ?>
<li class="second_level_cat">
<a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a>
</li>
<?php
$cat = Mage::getModel('catalog/category')->load($_category->getId());
$childrens = $cat->getChildren();
if($childrens)
{
$childs=explode(",",$childrens);
foreach($childs as $child){
$cat_child = Mage::getModel('catalog/category')->load($child);
?>
<li class="third_level_cat">
<a href="<?php echo $this->getCategoryUrl($cat_child) ?>"<?php if ($this->isCategoryActive($cat_child)): ?> class="current"<?php endif; ?>><?php echo ucfirst(strtolower($this->htmlEscape($cat_child->getName()))) ?></a>
</li>
<?php
}
}
?>
<?php endif; ?>
<?php endforeach ?>
</ol>
</div>
Here is code
$cats = Mage::getModel('catalog/category')->load(2)->getAllChildren(); // 2 = Root Category
$catIds = explode(',',$cats);
Select Category :
<select id="_cid" name="_cid">
<?PHP foreach ($catIds as $cid){ ?>
<?PHP $_category = Mage::getModel('catalog/category')->load($cid); ?>
<?PHP if($_category->getLevel() == 3 ) { ?>
<option value="<?PHP echo $_category->getId() ?>"> <?PHP echo $_category->getName() ?></option>
<?PHP } ?>
<?PHP if($_category->getLevel() == 4 ) { ?>
<option value="<?PHP echo $_category->getId() ?>"> <?PHP echo $_category->getName() ?></option>
<?PHP } ?>
<?PHP } ?>
</select>
I am trying to get my big catalog somewhat tablet friendly by offering an selection of tabs with sublevel links for my seperate categories. So if a user clicks a (1st level)head category it needs to display a nr of blocks which hold the picture, description and url of each direct child and a list of all the underlying (3rd level) child categories of the shown (2nd level) categorie. Would any off you guys be so kind to check my code?
<?php
$layer = Mage::getSingleton('catalog/layer');
$_category = $layer->getCurrentCategory();
$_categories = $_category->getCollection()
->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description'))
->addAttributeToFilter('is_active', 1)
->addIdFilter($_category->getChildren())
->setOrder('position', 'ASC')
->joinUrlRewrite();
?>
<?php $children = explode( ",", $this->getCurrentCategory()->getChildren() ); ?>
<ul class="category-grid">
<div class="category-list">
<?php foreach( $children as $child ): ?>
<?php $_child = Mage::getModel( 'catalog/category' )->load( $child ); ?>
<li class="item">
<img title="<?php echo $this->htmlEscape($_child->getName()) ?>" src="<?php echo $this->htmlEscape($_child->getImageUrl()) ?>" alt="<?php echo $this->htmlEscape($_child->getName()) ?>" />
<div class="subcategory-title">
<?php echo $this->htmlEscape($_child->getName()) ?>
</div>
<div class="description-block"> <?php echo $_child->getDescription(); ?></div>
<div class="children-links"><?php
$_helper = Mage::helper("catalog/category");
$rootCat = Mage::app()->getStore()->getRootCategoryId();
$current = Mage::registry('current_category');
if ($child){
//look for anchestor
$parentid = $child->getParentId();
$parent = Mage::getModel("catalog/category")->load($parentid);
if($parentid != $rootCat)
{
//find the anchestor
show_cat($parent,$_helper,$rootCat);
}else{
//is root
$_subcategories = $child->getChildrenCategories();
echo $_child->getAll_Children();
if(count($_subcategories)>0){
echo '<ul>';
foreach($_subcategories as $_category){
echo '<li>';
echo ''.$_category->getName().'';
if($child->getId() == $_category->getId()){
$current = Mage::registry('current_category');
if ($current){
//handle current
$_current_subcategories = $current->getChildrenCategories();
if(count($_current_subcategories)>0){
//the current cat has childrens
echo '<ul>';
foreach($_current_subcategories as $_sub_category){
echo '<li>';
echo ''.$_sub_category->getName().'';
echo '</li>';
}
echo '</ul>';
}else{
//the current cat has no childrens
$current_parent = $current->getParentId();
$current_parent = Mage::getModel("catalog/category")->load($current_parent );
$_current_subcategories = $current_parent ->getChildrenCategories();
echo '<ul>';
foreach($_current_subcategories as $_sub_category){
echo '<li>';
echo ''.$_sub_category->getName().'';
echo '</li>';
}
echo '</ul>';
}
}
}
echo '</li>';
}
echo '</ul>';
}
}
}
?>
</div>
</li>
<?php endforeach ?>
</div>
</ul>
you can this by the below code and also refer link at bottom
you could be go with this
<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
<ul class="category">
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<?php echo $_category->getName() ?>
</a>
<?php if ($currentCategory->getId() && $currentCategory->getId() == $_category->getId()): ?>
<?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
<?php $_subcategories = $_category->getChildrenCategories() ?>
<?php if (count($_subcategories) > 0): ?>
<ul class="subcategory">
<?php foreach($_subcategories as $_subcategory): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>">
<?php echo $_subcategory->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
EDIT
<ul class="subcategory">
<? foreach ($_categories as $_category):?>
<? if($_category->getIsActive()):
$cur_subcategory=Mage::getModel('catalog/category')->load($_category->getId());
$layer = Mage::getSingleton('catalog/layer');
$layer->setCurrentCategory($cur_subcategory);
?>
<li> <?php echo $_category->getName()?></li>
<? endif;?>
<?endforeach?>
</ul>
Or you can go throw this Detail documentation, i am sure that would be really helpful to you.
// get current category
$current_category = $layer->getCurrentCategory();
// get sub categories of current category
$parent_categories = Mage::getModel('catalog/category')->getCategories($current_category->getId());
// go through each sub category and get their sub categories.
foreach($parent_categories as $child_category)
{
$child_category_id = $child_category->getId();
$grandchild_categories = Mage::getModel('catalog/category')->getCategories($child_category_id);
}
Here is the tested code for showing sub categories. Just put this code above "Toolbar" code in your custom theme "Magento_catalog/templet/product/list.phtml"
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$category = $objectManager->get('Magento\Framework\Registry')->registry('current_category');//get current category
$subcats = $category->getChildrenCategories();
$_helper = $this->helper('Magento\Catalog\Helper\Output');
$imageHelper = \Magento\Framework\App\ObjectManager::getInstance()->get(\Magento\Catalog\Helper\Image::class);
if(count ($subcats) > 0)
{
?>
<div class = "sub-cat-div">
<ul class = "sub-cat-main">
<?php
foreach ($subcats as $subcat) {
if ($subcat->getIsActive()) {
$_category = $objectManager->create('Magento\Catalog\Model\Category')->load($subcat->getId());
$_outputhelper = $this->helper('Magento\Catalog\Helper\Output');
$subcaturl = $_category->getUrl();
$_imgHtml = '';
if ($_imgUrl = $_category->getImageUrl()) {
$_imgHtml = '<img src="' . $_imgUrl . '" />';
$_imgHtml = $_outputhelper->categoryAttribute($_category, $_imgHtml, 'image');
echo '<li class="sub-cat-image">' . $_imgHtml . '<span style="background-color: rgba(255,255,255,0.9)" class="content bg-white"><strong>' . $_category->getName() . '</strong></span></li>';
}
else{
$_imgUrl = $imageHelper->getDefaultPlaceholderUrl('image');
$_imgHtml = '<img src="' . $_imgUrl . '" />';
$_imgHtml = $_outputhelper->categoryAttribute($_category, $_imgHtml, 'image');
echo '<li class="sub-cat-image">' . $_imgHtml . '<span style="background-color: rgba(255,255,255,0.9)" class="content bg-white"><strong>' . $_category->getName() . '</strong></span></li>';
}
}
} ?>
</ul>
</div>
<?php
}
?>