La cuadrícula de productos de una página de categoría (frontend) se representa mediante el diseño en catalog_category_view.xml .
Digamos que tengo una colección de productos personalizada (que obtuve a través de
ProductRepositoryInterface::getList($searchCriteria) method
en una clase de bloque personalizada y desea representar esta colección. El resultado representado debe mostrarse como una cuadrícula de producto en la interfaz (al igual que cualquier página de categoría).
¿Cómo se puede hacer esto?
Al examinar catalog_category_view.xml
hay dos líneas importantes, que son responsables de representar una colección de productos:
<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">
¿Cómo puedo proporcionar mi colección de productos personalizada a estos archivos de plantilla para que representen mi colección?
Corrígeme, si estoy equivocado en esto.
Así es como se ve mi código de bloqueo:
<?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;
}
}