In this post I am going to explain how to get list of all products or you can say product collection in magento 2.
1. Using Dependency Injection
Add below code snippet in Block class.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | protected $_productCollectionFactory; public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory, array $data = [] ) { $this->_productCollectionFactory = $productCollectionFactory; parent::__construct($context, $data); } public function getProductCollection() { $productCollection = $this->_productCollectionFactory->create() ->addAttributeToSelect('*') ->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) ->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) ->setOrder('entity_id', 'DESC'); return $productCollection; } |
Add below code snippet in template file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Get product collection $productCollection = $block->getProductCollection(); echo "<pre>"; print_r($productCollection->getData()); echo "</pre>"; if ($productCollection && count($productCollection) > 0) { foreach ($productCollection AS $product) { echo $product->getId() . "<br/>"; echo $product->getName() . "<br/>"; echo $product->getProductUrl() . "<br/>"; } } |
2. Using Object Manager
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $productCollectionFactory = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory')->create(); // Get product collection $productCollection = $productCollectionFactory->addAttributeToSelect('*') ->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH) ->addAttributeToFilter('status', \Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED) ->setOrder('entity_id', 'DESC'); echo "<pre>"; print_r($productCollection->getData()); echo "</pre>"; if ($productCollection && count($productCollection) > 0) { foreach ($productCollection AS $product) { echo $product->getId() . "<br/>"; echo $product->getName() . "<br/>"; echo $product->getProductUrl() . "<br/>"; } } |
Write an article about ecommerce that help people to grow their ecommerce business. You’ll find best ecommerce guide, news, tips & more!
Leave a Reply