एक श्रेणी पृष्ठ (फ्रंटएंड) के उत्पाद ग्रिड को कैटलॉग_कैटरोरी_व्यू.एक्सएमएल में लेआउट के माध्यम से प्रस्तुत किया गया है ।
कहते हैं कि मेरे पास एक कस्टम उत्पाद संग्रह है (जो मुझे मिला
ProductRepositoryInterface::getList($searchCriteria) method
एक कस्टम ब्लॉक वर्ग में और इस संग्रह को प्रस्तुत करना चाहते हैं। प्रदान किए गए परिणाम को फ्रंटएंड पर उत्पाद ग्रिड के रूप में प्रदर्शित किया जाना चाहिए (किसी भी श्रेणी पृष्ठ की तरह)।
यह कैसे किया जा सकता है ?
में देख कर catalog_category_view.xml
दो महत्वपूर्ण लाइनों, जो एक उत्पाद संग्रह प्रतिपादन के लिए जिम्मेदार हैं देखते हैं:
<block class="Magento\Catalog\Block\Category\View" name="category.products" template="Magento_Catalog::category/products.phtml">
<block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Magento_Catalog::product/list.phtml">
मैं इन टेम्पलेट फ़ाइलों को अपना कस्टम उत्पाद संग्रह कैसे प्रदान कर सकता हूं, इसलिए वे मेरे संग्रह को प्रस्तुत करते हैं?
मुझे सही करें, अगर मैं इस पर गलत हूं।
इस तरह मेरा ब्लॉक कोड दिखता है:
<?php
namespace Mod\Mod1\Block;
use Magento\Framework\View\Element\Template;
class Main extends Template
{
protected $_filterBuilder;
protected $_filterGroupArray;
protected $_filterGroupBuilder;
protected $_searchCriteriaBuilder;
protected $_productRepository;
protected $_productFactory;
protected $_list;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
\Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
\Magento\Framework\Api\Search\FilterGroupBuilder $filterGroupBuilder,
\Magento\Framework\Api\FilterBuilder $filterBuilder,
\Magento\Catalog\Model\ProductFactory $productFactory,
array $data = [])
{
$this->_productRepository = $productRepository;
$this->_searchCriteriaBuilder = $searchCriteriaBuilder;
$this->_filterGroupBuilder = $filterGroupBuilder;
$this->_filterBuilder = $filterBuilder;
parent::__construct($context, $data);
}
public function getLoadedProductCollection(){
$searchCrit = $this->buildSearchCriteria('','','','','','5-',1);
$list = $this->_productRepository->getList($searchCrit);
return $list;
}
public function buildSearchCriteria(...){
....
return $searchCriteria;
}
}