Como exportar produtos no formato JSON é um post que irá ensinar a como criar uma lista de produtos e disponibiliza-la no formato JSON no Magento, versão 1.9.x.
Este tutorial é útil para integrações, aonde você deseja exibir em widgets alguns produtos de sua loja virtual Magento em outros sites.
Você também pode utilizar este código como base para uma integração.
Crie o arquivo PHP “produtos.php” na raiz da instalação Magento.
Inicie com seguinte código:
header("Access-Control-Allow-Origin: *");
Este Header irá permitir que sites externos acessem este arquivo (ex: via ajax..)
Iremos utilizar um arquivo “fora” do Magento, para que possamos acessar as funções, classes, etc, devemos incluir em nosso arquivo:
require_once '../app/Mage.php'; umask(0); Mage::app('default');
Não vamos complicar a coisa, nem tudo precisa de um módulo, ainda mais para a versão 1.9.x que logo será descontinuada.
Neste parte montamos nossa collection.
$collection_aux = Mage::getModel('catalog/product')->getCollection(); $collection_aux->joinField( 'qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left' );
Utilizo o “joinField” para agregar na nossa collection o estoque do produto.
Neste parte estou adicionando alguns atributos para filtrar a collection “addAttributeToFilter”, como Status, Tipo…
$collection_aux->addAttributeToFilter('qty', array('neq' => 0)); $collection_aux->addAttributeToFilter('type_id','simple'); $collection_aux->addAttributeToFilter('status', 1); $collection_aux->addAttributeToFilter('visibility', 4); $collection_aux->addAttributeToSelect('price'); $collection_aux->addAttributeToSelect('special_price'); $collection_aux->addAttributeToSelect('name'); $collection_aux->addAttributeToSelect('url'); $collection_aux->addAttributeToSelect('image'); $collection_aux->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id', null, 'left' );
E com addAttributeToSelect os campos que desejo.
Utilizo o joinField mais uma vez para incluir também a categoria.
Nesta parte estou definindo o modo de ordenação aleatório, você pode comentar ou alterar de acordo com suas necessidades.
$collection_aux->getSelect()->order(new Zend_Db_Expr('RAND()'));
Defino a quantidade de registros que desejo. Você pode montar uma paginação utilizando setPageSize e setCurPage.
$collection_aux->setPageSize(20)->setCurPage(1);
Percorremos os produtos e trabalhamos os valores em um array que será convertido para formato JSON.
$products = array(); $_coreHelper = Mage::helper('core'); foreach ($collection_aux as $product){ $price = $product->getPrice(); $specialprice = $product->getFinalPrice(); if( ((int) $price) == ((int) $specialprice)){ $price = $price; }else{ $price = $specialprice; } $products[] = array("name" => $product->getName(), "sku" => $product->getSku(), "url" => $product->getProductUrl(), "picture" => (string)Mage::helper('catalog/image')->init($product, 'image')->resize(197, 167), "price" => $price ); } echo json_encode($products);
Você pode montar uma simples integração utilizando este tutorial, análise o código e faça as melhorias.
Qualquer dúvida ou erro, por favor faça um comentário.
getCollection(); $collection_aux->joinField( 'qty', 'cataloginventory/stock_item', 'qty', 'product_id=entity_id', '{{table}}.stock_id=1', 'left' ); $collection_aux->addAttributeToFilter('qty', array('neq' => 0)); $collection_aux->addAttributeToFilter('type_id','simple'); $collection_aux->addAttributeToFilter('status', 1); $collection_aux->addAttributeToFilter('visibility', 4); $collection_aux->addAttributeToSelect('price'); $collection_aux->addAttributeToSelect('special_price'); $collection_aux->addAttributeToSelect('name'); $collection_aux->addAttributeToSelect('url'); $collection_aux->addAttributeToSelect('image'); $collection_aux->joinField('category_id', 'catalog/category_product', 'category_id', 'product_id=entity_id', null, 'left' ); $collection_aux->getSelect()->order(new Zend_Db_Expr('RAND()')); $collection_aux->setPageSize(20)->setCurPage(1); $products = array(); $_coreHelper = Mage::helper('core'); foreach ($collection_aux as $product){ $price = $product->getPrice(); $specialprice = $product->getFinalPrice(); if( ((int) $price) == ((int) $specialprice)){ $price = $price; }else{ $price = $specialprice; } $products[] = array("name" => $product->getName(), "sku" => $product->getSku(), "url" => $product->getProductUrl(), "picture" => (string)Mage::helper('catalog/image')->init($product, 'image')->resize(197, 167), "price" => $price ); } echo json_encode($products); ?>
Segurança: Atualizações frequentes geralmente incluem patches de segurança para corrigir vulnerabilidades identificadas. Ao manter o Magento atualizado, você reduz significativamente…
Como adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2 Injete o Magento\Framework\Message\ManagerInterface no construtor da sua…
Para exibir as mensagens adicionadas na classe Magento\Framework\Message\ManagerInterface em um arquivo .phtml, você pode usar o seguinte código: <?php $objectManager…
Para criar um script no Magento 2 que exporte as categorias para um arquivo XML com o nome da categoria,…
Para definir um vídeo MP4 como plano de fundo em um <div> usando HTML e CSS, você pode seguir estas…
Como desativar o "lastname" no Magento 2 e Adobe Commerce Desativando a obrigatoriedade do campo Execute a SQL abaixo diretamente…