3

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

1 Answer 1

4
<?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.

3
  • After using your code in block file, again i'm getting blank page at frontend. And my template code is $collection = $block->getProducts(); var_dump($collection);
    – Pinku
    Commented Dec 28, 2016 at 13:09
  • $collection = $block->getProducts(); $totalProducts = count($collection); <?php if($totalProducts > 0){ foreach($products as $product){ print_r($product->getData()); } ?> <?php } ?> Commented Dec 28, 2016 at 13:13
  • Still i am getting blank page after using your code.
    – Pinku
    Commented Dec 29, 2016 at 4:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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