Consulte el siguiente ejemplo para obtener la lista de todas las subcategorías de una categoría primaria específica usando el ID de la categoría primaria usando objectManager.
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$catId = 2; //Parent Category ID
$subCategory = $objectManager->create('Magento\Catalog\Model\Category')->load($catId);
$subCats = $subCategory->getChildrenCategories();
$_helper = $this->helper('Magento\Catalog\Helper\Output');
?>
<ul class="sub-cat-ul">
<?php
foreach ($subCats as $subcat) {
$_category = $objectManager->create('Magento\Catalog\Model\Category')->load($subcat->getId());
$subcaturl = $subcat->getUrl();
$_imgHtml = '';
if ($_imgUrl = $_category->getImageUrl()) {
$_imgHtml = '<img src="' . $_imgUrl . '" />';
$_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
} ?>
<li class="cat-li">
<div class="cat-image">
<a href="<?php echo $subcaturl ?>"><?php echo $_imgHtml;?></a>
</div>
<div class="info">
<h4><?php echo $subcat->getName(); ?></h4>
<a class="link" href="<?php echo $subcaturl ?>"><?php /* @escapeNotVerified */ echo __('View more') ?></a>
</div>
</li>
<?php } ?>
</ul>
=====
Consulte el siguiente ejemplo para obtener una lista de todas las subcategorías de una categoría principal específica utilizando el ID de la categoría principal mediante el repositorio.
En primer lugar, agregue CategoryRepository en la construcción:
<?php
protected $categoryRepository;
public function __construct(
\Magento\Catalog\Model\CategoryRepository $categoryRepository
) {
$this->categoryRepository = $categoryRepository;
}
?>
Ahora puede usar la siguiente manera:
<?php
$categoryId = [YOUR_CATEGORY_ID];
$category = $this->categoryRepository->get($categoryId);
$subCategories = $category->getChildrenCategories();
foreach($subCategories as $subCategory) {
echo $subCategory->getName();
/* For Sub Categories */
if($subcategorie->hasChildren()) {
$childCategoryObj = $this->categoryRepository->get($subCategory->getId());
$childSubcategories = $childCategoryObj->getChildrenCategories();
foreach($childSubcategories as $childSubcategory) {
echo $childSubcategory->getName();
}
}
}
?>
$subcats = $subcategory->getChildrenCategories();