I'm beginner on Magento and i'm working with Magento2. I already created my categories.phtm and show it in a CMS page but i want to show sub-categories of my root category in a this page like a grid with images and title.
My categories structure is like this :
+ Products( this is my root caterogy)
+ cat 1
+ cat 2
+ cat 3
+ cat 4
Thank you
You can check this link:
Hello Farisshindsite,
Create a block and add following code
<?php
namespace Ipragmatech\Bannerblock\Block;
use Magento\Catalog\Helper\Category;
class Popularmenu extends \Magento\Framework\View\Element\Template
{
protected $_categoryHelper;
protected $_categoryFlatConfig;
protected $_categoryFactory
public function __construct(
\Magento\Catalog\Helper\Category $catalogCategory,
\Magento\Catalog\Model\Indexer\Category\Flat\State $categoryFlatState,
\Magento\Catalog\Model\CategoryFactory $categoryFactory,
) {
$this->_categoryHelper = $catalogCategory;
$this->_categoryFlatConfig = $categoryFlatState;
$this->_categoryFactory = $categoryFactory;
}
/*
* Return categories helper
*/
public function getStoreCategories(
$sorted = false,
$asCollection = false,
$toLoad = true
) {
return $this->_categoryHelper->getStoreCategories($sorted,
$asCollection, $toLoad);
}
// sub category
public function getChildCategories($category)
{
if ($this->_categoryFlatConfig->isFlatEnabled() &&
$category->getUseFlatResource()) {
$subcategories = (array)$category->getChildrenNodes();
} else {
$subcategories = $category->getChildren();
}
return $subcategories;
}
public function getCategorymodel($id)
{
$_category = $this->_categoryFactory->create();
$_category->load($id);
return $_category;
}
}on phtml file it can be accessed as
<?php $isEnable = $this->helper('Ipragmatech\Bannerblock\Helper\Data')->getConfig('bannerblocksection/general/banneractive'); ?>
<?php
// $productCollection = $block->getProductCollection();
$categoryIds = $block->getCategoryList();
<?php
$categories = $block->getStoreCategories();
?>
<div class="popular-menu">
<div class="content-heading">
<h2 class="title"><?php echo $this->getTitle(); ?></h2>
</div>
<ul class="popular-menu-ul">
<?php if(count($categories)):?>
<?php foreach ($categories as $catrgory):?>
<?php $category = $this->getCategorymodel($catrgoryId->getEntityId())?>
<li class="popular-menu-li"><span class="pop-menu"> <a
href="<?php echo $category->getUrl(); ?>"> <span class="cat-title"><?php echo $category->getName(); ?></span>
</a>
</span></li>
<?php endforeach;?>
<?php endif;?>
</ul>
</div>