I am trying to create a product list for featured products in Magento. I wrote the following code in the file app/code/MyModule/MySite/Block/Products/Featured.php
:
<?php namespace MyModule\MySite\Block\Products; class Featured extends \Magento\Catalog\Block\Product\ListProduct { /** * Catalog product visibility * * @var \Magento\Catalog\Model\Product\Visibility */ protected $ _catalogProductVisibility; /** * Product collection factory * * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */ protected $ _productCollectionFactory; /** * @var CategoryRepositoryInterface */ protected $ categoryRepository; public function __construct( \Magento\Catalog\Block\Product\Context $ context, \Magento\Framework\Data\Helper\PostHelper $ postDataHelper, \Magento\Catalog\Model\Layer\Resolver $ layerResolver, \Magento\Catalog\Api\CategoryRepositoryInterface $ categoryRepository, \Magento\Framework\Url\Helper\Data $ urlHelper, \Magento\Catalog\Model\Product\Visibility $ catalogProductVisibility, \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $ productCollectionFactory, array $ data = [] ) { $ this->_productCollectionFactory = $ productCollectionFactory; $ this->_catalogProductVisibility = $ catalogProductVisibility; parent::__construct($ context, $ postDataHelper, $ layerResolver,$ categoryRepository,$ urlHelper,$ data); } protected function _getProductCollection(){ $ collection = $ this->_productCollectionFactory->create() ->addAttributeToFilter('status', '1') ->addAttributeToFilter('featured', '1'); $ collection->setVisibility($ this->_catalogProductVisibility->getVisibleInCatalogIds()); $ collection = $ this->_addProductAttributesAndPrices($ collection) ->setPageSize(4) ->setCurPage(1); return $ collection; } }
In my page, I duplicate one line that is working (the second line is working code):
{{block class="MyModule\MySite\Block\Products\Featured" template="WorkingModule_WorkingSite::products/featured_carousel2.phtml" limit="10" category_id="71" block_name="Featured Products"}} {{block class="Magento\Catalog\Block\Product\ListProduct" template="WorkingModule_WorkingSite::products/featured_carousel2.phtml" limit="10" category_id="71" block_name="Featured Products"}}
Nothing is displayed for the first line and when I debugged, getTemplate()
seems to be null. Does anybody see what I am doing wrong?