Obtendo uma coleção de produtos no Magento 2
Desenvolvimento, Magento 2
Publicado em 22 de agosto de 2022
Neste artigo veremos algumas formas de se obter uma coleção de produtos (collection) no Magento. Também vamos ver como filtrar estes produtos por atributo ou categoria.
Use Injeção de Dependência 🫣
Nos exemplos abaixo usarei o $objectManager como referência a \Magento\Framework\App\ObjectManager::getInstance()
. Fiz isto desta forma apenas para simplificar a quantidade de código e ir direto ao ponto.
No entanto, ao desenvolver seus módulos e componentes, utilize injeção de dependência. Ou seja, injete as classes e factories que usamos aqui em seus métodos construtores.
Para mais informações, assista o Magento 2: O Curso, e a aula gratuita sobre injeção de dependência.
Obtendo uma coleção de produtos
$productCollectionFactory = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory'); $collection = $productCollectionFactory->create(); $collection->setPage(1, 20); //define paginação (página 1, 20 produtos por vez) foreach ($collection as $product) { print_r($product->getData()); }
Coleção de produtos com todos os atributos
$productCollectionFactory = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory'); $collection = $productCollectionFactory->create(); $collection->addAttributeToSelect('*'); $collection->setPage(1, 20); foreach ($collection as $product) { print_r($product->getData()); }
Produtos de uma categoria
$productCollectionFactory = $objectManager->get('\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory'); $categoryCollectionFactory = $objectManager->get('\Magento\Catalog\Model\CategoryFactory'); $categoryId = '3'; // ID da Categoria $category = $categoryCollectionFactory->create()->load($categoryId); $collection = $productCollectionFactory->create(); $collection->addAttributeToSelect('*'); $collection->addCategoryFilter($category); $collection->addAttributeToFilter('visibility', \Magento\Catalog\Model\Product\Visibility::VISIBILITY_BOTH); //se o produto é visível individualmente $collection->addAttributeToFilter('status',\Magento\Catalog\Model\Product\Attribute\Source\Status::STATUS_ENABLED); //somente produtos habilitados foreach ($collection as $product) { print_r($product->getData()); }
Dica do Clube Magenteiro 🤘
Para testar os exemplos acima com mais facilidade e sem precisar criar um módulo pra isso, você pode usar o dev:console 🔒. Depois basta substituir a variável $objectManager
por $di
.
Usando APIs (Alternativa)
Se você precisa da lista de produtos (com o sem filtros) para usar em uma integração externa, também pode usar as APIs do Magento. Você pode conferir uma série de exemplos gratuitos aqui do blog.
Se preferir, confira o curso completo de APIs, com mais de 650 exemplos de uso.
Fonte: Inspirado no Artigo da Webcreta
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/colecao-de-produtos-como-pegar/"]