Question

I have created one custom attribute and also i have added some product under that attribute now i need product collection of that attribute. Below is my block code for collection but it's not working

public function getCustomProduct()
{ 
        $collection =  $this->_productCollectionFactory->create()
                        ->addAttributeToSelect('*')
                        ->addAttributeToFilter('status', '1')
                        ->addAttributeToFilter('featured_product', '1')
                        ->addFieldToFilter('visibility', $this->_productVisibility->getVisibleInSiteIds());


    return $collection;
}

i need all products in template file those have under featured_product attribute. Please help me. Thanks in Advanced

Was it helpful?

Solution

<?php
namespace Vendor\Module\Block;

class Featured extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Catalog\Block\Product\Context $context, 
        \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        \Magento\Catalog\Model\Product\Visibility $catalogProductVisibility,
        array $data = []
    ) {
        $this->_productCollectionFactory = $productCollectionFactory;        
        $this->catalogProductVisibility = $catalogProductVisibility;
        parent::__construct(
            $context,
            $data
        );
    }

    public function getProducts()
    {
        $collection = $this->_productCollectionFactory->create();
        $collection = $this->_productCollectionFactory->create()->addAttributeToSelect('*')->addAttributeToFilter('status', '1')
                        ->addAttributeToFilter('featured_product', '1');

        $collection->setVisibility($this->catalogProductVisibility->getVisibleInCatalogIds());
        return $collection;
    }   

}

You can use above code to get featured product.

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top