ich bin gerade dabei ein Magento-System zu migrieren. Da mein Magento-System ursprünglich vor vielen Jahren mit der Version 1.3 begonnen hat, habe ich die Herausforderung, dass die Hersteller nur auf einem Attribut in den Produkten integriert waren. Nun möchte ich gerne einen initialen Herstellerimport in Shopware vornehmen.
Dabei habe ich mir in Magento CSV-Exports geschrieben, welche ich in die leeren Herstellertabellen:
s_articles_supplier
s_articles_supplier_attributes
Nach meinen ersten Tests funktioniert das Ganze auch wie gewünscht. Ich wollte hier in die Runde fragen, ob das Vorgehen so in Ordnung ist oder ob ich mir da irgendwelche bösen Nebeneffekte verursachen könnte?
danke für die Antwort. Mein Problem ist aber, dass ich die Hersteller nicht auf den Artikel als typisches Herstellerattribut habe.
Folgende Konstellation ist bei mir im Magento System im Einsatz (früher ging das leider nicht anders)
Ich habe zig unterschiedliche Herstellerkategorieseiten. Diese enthalten vielen Informationen der Hersteller
Name
Beschreibung
Adresse
Herstellerlink
Metainformationen
Quasi fast das volle Programm an Daten.
Zusätzlich gibt es auf dem Artikel eine Eigenschaft als Filter, welche lediglich eine Referenz zu der Kategorie hat.
Aus diesem Grund sehe ich wenig Chancen über den Artikelimport die Hersteller automatisiert angelegt zu bekommen, da ich die ja quasi gar nicht als typisches Herstellerattribut in den Produkten habe.
da gebe ich dir Recht. Artikel müssen noch vorhanden sein.
Das ist dann mein 2. Schritt dafür zu Sorgen, dass die Referenz des Herstellers bei meinem Artikelimport korrekt mitgegeben wird. Ich werde das in jedem Falle mal ausgiebig testen. Nach meinen ersten Tests sah es gut aus. Wobei natürlich die API natürlich eine saubere Methode ist :)
Ich habe mir nun die API auch nochmals angesehen und mich entschieden, den Import einfach über die API zu machen. Ist sauberer und auch nicht wirklich viel mehr Aufwand. Danke nochmal für eure Tipps.
wollte nochmal Bescheid geben, dass ich den Import nun via Shopware API vorgenommen habe. Habe mir lediglich ein kleines PHP-Skript geschrieben und entsprechend über meinen alten Magento-Shop aufgerufen. Funktioniert sauber und ohne Probleme.
Für alle die es interessiert anbei der Code:
include 'SwApiClient.php';
require("../app/Mage.php"); // load the main Mage file
Mage::app(); // not run() because you just want to load Magento, not run it.
$apiClient = new ApiClient(
//URL of the Server
'http://URL/api',
//Username
'APIUSER',
//API Key
'APIKEYAUSSHOPWAREBACKEND'
);
// load all of the active categories in the system and include all attributes
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter()
->addAttributeToFilter('parent_id',array('in' => array(25,29,35,49,77,103,166,174,188,221,239,401,500,547,578,633,664,707)));
$export_file = "log_import_suppliers.log";
$export = fopen($export_file, 'w') or die("Permissions error.");
$supplier_file = "supplier_shopware.csv";
$export_supplier = fopen($supplier_file, 'w') or die("Permissions error.");
$output = "";
$output = date('d.m.Y H:i') . "Start Importing manufactuers";
$output .= "\r\n"; // add end of line
fwrite($export, $output); // write the file header with the column names
$outputSupplier = "id~name\r\n"; // column names. end with a newline.
fwrite($export_supplier, $outputSupplier); // write the file header with the column names
foreach ($categories as $category) {
$apiImportCall = $apiClient->post('manufacturers', array(
'name' => $category->getName(),
'link' => $category->getLinkweingut(),
'description' => $category->getDescription(),
'metaTitle' => $category->getMetaTitle(),
'metaKeywords' => $category->getMetaKeywords(),
'metaDescription' => $category->getMetaDescription(),
'attribute' => array(
'attr' => $category->getAdresserzeuger()
)
));
$output = date('d.m.Y H:i') . " Result Importing: " . $category->getName() . " --> " . $apiImportCall["success"];
$output .= "\r\n"; // add end of line
fwrite($export, $output);
if($apiImportCall["success"] == 1)
{
$outputSupplier = ""; // re-initialize $output on each iteration
$outputSupplier .= '"' .$apiImportCall["data"]["id"]. '"~';
$outputSupplier .= '"'.$category->getName().'"'; /
$outputSupplier .= "\r\n"; // add end of line
fwrite($export_supplier, $outputSupplier);
}
}
echo "Finished import";
fclose($export); // close the file handle.
fclose($export_supplier);