Magento

Como exportar produtos no formato JSON – Magento

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 , versão 1.9.x.

Sobre exportando os produtos em JSON

Este tutorial é útil para integrações, aonde você deseja exibir em widgets alguns produtos de sua Magento em outros sites.

Você também pode utilizar este código como base para uma integração.

Criando o arquivo

Crie o arquivo “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 ..)

Carregando Magento no arquivo externo

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.

Montando a collection

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 setPageSizesetCurPage.

$collection_aux->setPageSize(20)->setCurPage(1);

Parte Final, loop e output JSON

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);

Conclusão do como exportar produtos no formato JSON

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.

Código completo

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);

 

?>

 

Post Recentes

Por que devo sempre manter o Magento 2 atualizado?

Segurança: Atualizações frequentes geralmente incluem patches de segurança para corrigir vulnerabilidades identificadas. Ao manter o Magento atualizado, você reduz significativamente…

1 mês atrás

Adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2

Como adicionar uma mensagem de Alerta ou Aviso do Admin do Magento 2 Injete o Magento\Framework\Message\ManagerInterface no construtor da sua…

2 meses atrás

Exibir mensagens erro/sucesso da Classe: Magento\Framework\Message\ManagerInterface

Para exibir as mensagens adicionadas na classe Magento\Framework\Message\ManagerInterface em um arquivo .phtml, você pode usar o seguinte código: <?php $objectManager…

2 meses atrás

Exportar as categorias do Magento 2 em um XML

Para criar um script no Magento 2 que exporte as categorias para um arquivo XML com o nome da categoria,…

3 meses atrás

Colocar um video como Background utilizando HTML + CSS

Para definir um vídeo MP4 como plano de fundo em um <div> usando HTML e CSS, você pode seguir estas…

4 meses atrás

Desativar o “lastname” no Magento 2

Como desativar o "lastname" no Magento 2 e Adobe Commerce Desativando a obrigatoriedade do campo Execute a SQL abaixo diretamente…

4 meses atrás