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.

Exportando os produtos no formato JSON Magento

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

<?php

 header("Access-Control-Allow-Origin: *");

 require_once '../app/Mage.php';

 umask(0);

 Mage::app('default');

 

 $collection_aux = Mage::getModel('catalog/product')->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);

 

?>

 

Dúvidas? Faça um comentário logo abaixo ou envie uma mensagem clicando aqui.

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *