Magento Produkt Export über Script und Speicherung in einer csv Datei (inkl Kundengruppen Preise)

Gepostet am Januar 9, 2013

Das folgende Script Exportiert alle aktiven Produkte eines Shops und speichert die festgelegten Attribute in einer CSV-Datei.
Im folgenden Beispiel werden neben den Standard-Attributen auch eigene Attribute und der Benutzer-Gruppen-Preis (ab Magento 1.7) ausgelesen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
 
#####################################
### PRODUCT EXPORT
#####################################

header('Content-Type: text/html; charset=utf-8'); 
date_default_timezone_set('Europe/Berlin');
 
/********** options ************/
$export_file = $_SERVER['DOCUMENT_ROOT'].'/var/export/xxx-artikelstamm.csv';
 
/********** mage ************/
$lastOrderId = 0;
$arrOrders = array();
 
require_once 'app/Mage.php';
Mage::app();
 
/********** file ************/
 
if (!is_writable($export_file)) {
    echo "Datein (".$export_file.") nicht beschreibbar!";
	exit;	
}
if (!$handle = fopen($export_file, "w")) {
	 echo "Kann die Datei $filename nicht öffnen";
	 exit;
}
$headline = '"ArtikelNr","Bezeichnung","Regulaere Preis","Silber Preis","Gold Preis","Lagerbestand","Marke","Gewicht","Beschreibung","Lieferzeit","EAN","Kurzbeschreibung","Modellnummer"';
if (!fwrite($handle, $headline."\n" )) {
	 echo "Kann die Datei $filename nicht Beschreiben";
	 exit;
}
 
/********** function ************/
 
function cleanString($string) {
	$string = str_replace(array('"',"\n","\r"),' ',$string);
	return $string;
}
 
function cleanPrice($string) {
	$string = sprintf("%02.4f",$string);
	return $string;
}
 
 
/********** export ************/
 
$productsCollection = Mage::getModel('catalog/product')->getCollection();
$productsCollection->addAttributeToFilter('status', array('eq' => '1'));
 
foreach ($productsCollection as $product) {
 
	$product = Mage::getModel("catalog/product")->load( $product->getId() );
	$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $product->getId() );
	$product->setCustomerGroupId(0);
 
	$export_product = array();
	$export_product['000_ID'] = $product->getid();
	$export_product['001_NAME'] = cleanString($product->getname());
	$export_product['002_REGULAR_PRICE'] = cleanPrice($product->getprice());
 
    $product = Mage::getModel("catalog/product")->load( $product->getId() );
	$product->setCustomerGroupId(6);
	$export_product['003_SILVER_PRICE'] = cleanPrice($product->getFinalPrice());
 
    $product = Mage::getModel("catalog/product")->load( $product->getId() );
	$product->setCustomerGroupId(5);
	$export_product['004_GOLD_PRICE'] = cleanPrice($product->getFinalPrice());
 
	$export_product['005_QTY'] = $stockItem->getQty();
	$export_product['006_MANUFACTURER'] = $product->getmanufacturer();
	$export_product['007_WEIGHT'] = $product->getweight();
	$export_product['008_DESCRIPTION'] = cleanString($product->getdescription());
	$export_product['009_SHIPPINGTIME'] = $product->getAttributeText('lieferzeit');
	$export_product['010_EAN'] = $product->getean();
	$export_product['011_SHORTDESC'] = cleanString($product->getshort_description());
	$export_product['012_MANUFACTURERID'] = $product->gethersteller();
 
	fwrite($handle, '"'.implode('","',$export_product).'"'."\n" );
 
}
 
/********** file ************/
fclose($handle);
echo "Finished";

Tags: ,

5 Antworten bis “Magento Produkt Export über Script und Speicherung in einer csv Datei (inkl Kundengruppen Preise)”

  1. JK
    Jan 21, 2013
    Reply

    Hi,

    danke schon mal für das interessante Script. Beim testen bekomme ich allerdings, nachdem der Header geschrieben wurde, eine Fehlermeldung. Und leider, leider, bin ich noch nicht fit genug, schnell zu ergründen weshalb. „Fatal error: Call to a member function getSource() on a non-object in …app/code/core/Mage/Catalog/Model/Product.php on line 1389“ in Version Mage 1.7.0.2

    Irgendwelche Ideen oder Hinweise?


    • Marcel
      Jan 21, 2013
      Reply

      Hallo,

      das Script muss an bestimmten Punkten, an einen Shop angepasst werden. Das Script habe ich auch für eine 1.7.0.2 Version geschrieben, sollte aber Problemlos auch unter anderen Version funktionieren. Ich denke das Problem liegt einfach in der speziellen Anpassung. Als Beispiel die „$product->setCustomerGroupId(5);“ Wenn es im Shop keine Kundengruppe 5 oder 6 gibt, so wird ein Fehler ausgegeben. Oder „$export_product[‚012_MANUFACTURERID‘] = $product->gethersteller();“ hier gab es ein neues Attribut namens „hersteller“, auch hier kann es zu Fehlern kommen. Am besten ist es Funktionalitäten in der „foreach“ Schleife auszukommentieren und schrittweise anzupassen.


  2. JK
    Jan 21, 2013
    Reply

    Danke! Sofern man den AttributeText richtig schreibt, geht’s auch. Die GroupID war angepasst 🙂 Hab aber ne andere Frage, der Filter load()->addAttributeToFilter(’status‘,1) scheint nicht zu funktionieren. Es werden alle Produkte ausgeliefert, nicht nur die aktiven.


    • Marcel
      Jan 21, 2013
      Reply

      Hups, ist korrigiert, muss „->addAttributeToFilter(’status‘, array(‚eq‘ => 1));“ heißen


  3. JK
    Jan 21, 2013
    Reply

    So, hab jetzt ganz simpel den Output von fwrite in print umgesetzt und im Header steht nun:

    $filename = „filename.csv“;
    header(„Content-type: application/octet-stream; charset=utf-8“);
    header(„Content-Disposition: attachment; filename=\“$filename\““);

    das funktioniert…



Leave a Reply

 

Posts of Current Category



Facebook: