Flux XML des articles (magento)

Ceci n’est pas vraiment un module mais un bout de code suite à un développement pour un client pressé…
Le but est de lire un csv contenant les sku et générer un fichier xml de catalogue produit.
1- Création d’un dossier à la racine du site, par exemple « xml »
2- Dans ce dossier, dépot d’un fichier index.html vide :)
3- Je dépose également un fichier csv, (nomme flux.csv par exemple) contenant une seule colonne « sku », comme ceci :

sku;
SKU_PRODUIT1;
SKU_PRODUIT2;
….

4- Création du fichier php, par exemple : flux.php
Voici le code du fichier flux.php

<?php
header("Content-type: text/xml");
require_once '../app/Mage.php';  
umask(0);  
Mage::app('default');
 
function parse_csv_file($file, $columnheadings = false, $delimiter = ';', $enclosure = "\"") {
 
       $row = 1;
       $rows = array();
       $handle = fopen($file, 'r');
 
       while (($data = fgetcsv($handle, 1000, $delimiter, $enclosure )) !== FALSE) {
 
           if (!($columnheadings == false) && ($row == 1)) {
               $headingTexts = $data;
           } elseif (!($columnheadings == false)) {
               foreach ($data as $key => $value) {
                   unset($data[$key]);
                   $data[$headingTexts[$key]] = $value;
               }
               $rows[] = $data;
           } else {
               $rows[] = $data;
           }
           $row++;
       }
 
       fclose($handle);
       return $rows;
    }
 
 
$a_produits = parse_csv_file('flux.csv', true, ';');
$a_results = array();
try{
	foreach ($a_produits as $key => $value){
		$product = Mage::getModel('catalog/product');
		$productId = $product->getIdBySku($value['sku']);
		if ($productId) {
			$product->load($productId);
			//Mage_Catalog_Model_Product_Status::STATUS_ENABLED
			//Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
			//Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH
 
			if($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE && $product->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED){
 
				$a_results[$value['sku']] = array(
					 'sku' => $value['sku'],
					 'name' => utf8_decode($product->getName()),
					 'description' => "<![CDATA[".strip_tags($product->getDescription())."]]>",
					 'url' => "<![CDATA[".$product->getProductUrl()."]]>",
					 'final_price' => $product->getFinalPrice(),
					 'picture' => Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(200, 200),
					 );
			}
		}
	}
}catch (Exception $e){
	die($e->getMessage());
}
?>
<?php
echo "<products>";
foreach ($a_results as $key => $value){
	echo "<product>";
	foreach ($value as $key2 => $value2){
		echo "<".$key2.">".$value2."</".$key2.">";
	}
	echo "</product>";
}
echo "</products>";
?>

Il suffit de taper comme url : http://www.votreboutique.com/xml/flux.php pour optenir le fichier xml.
A vous de rajouter les infos demandées :)

One single comment

  1. Choussamaster dit :

    Merci pour ce code mais j’arrive pas à le faire fonctionner sur magento 1.5 :(
    Fatal error: Uncaught exception ‘Mage_Core_Model_Store_Exception’ in C:\wamp\www\deals\app\code\core\Mage\Core\Model\App.php:1284
    ^
    ca te dit quelque chose? merci

Copyright © Magento Code
Développement Magento & Design Magento

Développement Magento