12

How to get bestseller and most viewed product in homepage Magento 2?

We have to display bestseller and most viewed product list in homepage slider in magento 2.

12

For bestseller create a block in __construct get instance of

\Magento\Sales\Model\ResourceModel\Report\Bestsellers\CollectionFactory $collectionFactory,

ex

<?php
namespace Sugarcode\Test\Block;

class Test extends \Magento\Framework\View\Element\Template
{
    protected $_coreRegistry = null;
    protected $_collectionFactory;

    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $registry,
       \Magento\Sales\Model\ResourceModel\Report\Bestsellers\CollectionFactory $collectionFactory,
        array $data = []
    ) {
        $this->_collectionFactory = $collectionFactory;
        $this->_coreRegistry = $registry;
        parent::__construct($context, $data);
    }



    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }
    public function getBestSellerData()
    {
        $collection = $this->_collectionFactory->create()->setModel(
            'Magento\Catalog\Model\Product'
        );

        return $collection;
    }       

}

For recently viewed you can use widget from admin side or else you can write custom block with \Magento\Reports\Model\ResourceModel\Product\CollectionFactory $productsFactory

Look at:

vendor\magento\module-backend\Block\Dashboard\Tab\Products\Viewed.php

and

vendor\magento\module-backend\Block\Dashboard\Tab\Products\Ordered.php 
  • How to get list of most viewed products? – Rakesh Jesadiya Dec 1 '15 at 6:30
  • create widget from admin , in front end call that widget, if bestsellers works for you then accept my answer so it will usefull for others – Pradeep Kumar Dec 1 '15 at 6:31
  • ok, i will check it first for bestseller. Thanks. – Rakesh Jesadiya Dec 1 '15 at 6:42
  • its working fine you will get product id and name, just put for each loop for the collection and print the data – Pradeep Kumar Dec 1 '15 at 9:06
  • 1
    @RBJesadiya:- in forum you will not get 100% solution for your task , you will get only ideas , if you want raise oen more new ticket , you can try this $collection->getSelect()->limit(10); – Pradeep Kumar Dec 4 '15 at 9:59
0

Use the following code to view the BEST SELLER as well as MOST VIEWED products in your Magento 2 Slider.

<?php $objectManager = \Magento\Framework\App\ObjectManager::getInstance();   
$productCollection = $objectManager->create('Magento\Reports\Model\ResourceModel\Report\Collection\Factory'); 
$collection = $productCollection->create('Magento\Sales\Model\ResourceModel\Report\Bestsellers\Collection'); ?>
  • Keep in mind when you first launch a site, you won't have any sales data, so you'll need to add backup logic, e.g., retrieve random products from catalog if there is nothing in sales table. – thdoan Mar 8 '17 at 7:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.