Question

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

Était-ce utile?

La solution

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

Autres conseils

<?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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top