Pregunta

I want to show all the category on the left sidebar on home page. Please let me know how to get all the categories by collection, or there is another way to call all the category. please let me know

¿Fue útil?

Solución

Here is open source extension for do that - you can use code and modify for your needs Magento 2 Frontend : How to call category collection on home page Explained in blog post

Otros consejos

<?php 
  $categoryHelper = $this->helper('Magento\Catalog\Helper\Category');
  foreach($categoryHelper->getStoreCategories() as $category): 
?>
  <li><a href="<?php echo $categoryHelper->getCategoryUrl($category) ?>"><?php echo $category->getName() ?></a></li>
<?php endforeach; ?>

Check below code:

<?php
$objectManagerr = \Magento\Framework\App\ObjectManager::getInstance();
                    $categoryFactory = $objectManagerr->create('Magento\Catalog\Model\ResourceModel\Category\CollectionFactory');

                    $categories = $categoryFactory->create()                              
                                ->addAttributeToSelect('*');

foreach ($categories as $category):     
echo $category->getName();
endforeach;
?>

You need to use DI in your class - 1. add property of AdminSession class to class 2. add including of the variable using dependensy injection:

/**
 * @var \Magento\Store\Model\StoreManagerInterface
 */

protected $_storeManager;

public function __construct(
    \Magento\Store\Model\StoreManagerInterface  $_storeManager
){
    $this->_storeManager = $_storeManager;
}
$store = 1;//store id
public function getCategories($store){
    $rootCategoryId = $this->_storeManager->getStore($store)
        ->getRootCategoryId();
    $collection = $this->_categoryCollectionFactory->create();
    $collection->addAttributeToSelect('name','id')
        ->addIsActiveFilter(true)
        ->addAttributeToFilter('path', array('like' => "1/{$rootCategoryId}/%"))
        ->addLevelFilter(2);

    foreach ($collection as $category) {
        $categories[] = array(
            'id'=>$category->getId(),
            'name'=>$category->getName(),
        ); 
    }
    return $categories;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top