
Post ensinando a como listar os produtos no Magento 2 criando uma Collection, adicionando filtros para exibir apenas os produtos em estoque, ativos e presentes em determinadas categorias.
Exemplo:
namespace [YourClassNameSpace];
class [YourClassName]
{
protected $_productCollectionFactory;
public function __construct(
....
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
.....
) {
.....
$this->_productCollectionFactory = $productCollectionFactory;
.....
}
public function getProductCollection(){
$collection = $this->_productCollectionFactory->create();
$collection
->addMinimalPrice()
->addFinalPrice()
->addTaxPercents()
->addAttributeToSelect('*')
->addUrlRewrite();
return $collection;
}
} Para criar um módulo clique neste link: Como criar um Módulo no Magento 2
Você deve criar o arquivo HelloWord.php no diretório: Rogertakemiya/Test/Block
Conteúdo:
<?php
namespace Rogertakemiya\Test\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
protected $_productCollectionFactory;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
array $data = []
)
{
$this->_productCollectionFactory = $productCollectionFactory;
parent::__construct($context, $data);
}
public function getProductCollection()
{
$collection = $this->_productCollectionFactory->create();
$collection->addAttributeToSelect('*');
$collection->setPageSize(3); // fetching only 3 products
return $collection;
}
}
?> Para listar os produtos em um arquivo phtml, utilize:
$productCollection = $block->getProductCollection();
foreach ($productCollection as $product) {
print_r($product->getData());
echo "<br>";
} Utilizar o Object Manager não é considera uma das melhores praticas para esse tipo de tarefa.
Por que?
A forma correta seria:
Filtrando apenas os produtos ativos “habilitados” e com estoque.
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$productCollection = $objectManager->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
$collection = $productCollection->create()
->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED)
->joinField('qty', 'cataloginventory_stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left')
->addAttributeToSelect('*')
->load();
foreach ($collection as $product){
echo 'Name = '.$product->getName().'<br>';
}
$productcollection = $this->_objectManager->create('Magento\Catalog\Model\ResourceModel\Product\Collection')
->addAttributeToSelect(['name', 'price', 'image'])
->addAttributeToFilter('name', array('like' => '%Iphone%'))
->setPageSize(10,1); $productCollection = $this->productCollectionFactory->create();
$productCollection->addAttributeToSelect('*');
$productCollection->addCategoriesFilter(array('in' => $catalog_ids));
/* $catalog_ids, array com os ID das categorias */ Listar os produtos no Magento 2 pode ser considerado uma tarefa complexa devido a necessidade de se criar um módulo para isso.
Evite utilizar o objectManager, qualquer dúvida por favor, fique a vontade para fazer um comentário.
Módulo gratuito Roger_CnpjAlfanumerico que aplica máscara e validação do novo CNPJ alfanumérico no checkout e formulários do Magento 2 e…
A partir de 06/07/2026 a Receita passa a emitir CNPJ alfanumérico. Conheça o plugin grátis que aplica máscara e validação…
Para remover um módulo do Magento 2, siga os passos abaixo: 1. Desabilitar o módulo Primeiro, desabilite o módulo usando…
Para cancelar 100% do pedido e criar um crédito para todos os itens através da API REST do Magento 2,…
No Magento 2, a quantidade "reservada" na "Salable Quantity" é gerenciada principalmente pelos módulos MSI (Multi-Source Inventory). A "Salable Quantity"…
Como corrigir o erro ao acessar o Admin do Magento 2. Mesmo após fazer o login, permanece na tela de…