Produkte mehrsprachig importieren
In Magento können durch das Anlegen unterschiedlicher Store-Views Produkte mehrsprachig gepflegt werden. Der Benutzer kann dabei entscheiden ob die Daten vom Hauptstore übernommen oder durch die aktuelle Store-View überschrieben werden.
Ein bestehender Produktimport lässt sich relativ einfach um die Möglichkeit der Mehrsprachigkeit erweitern. Der Trick besteht einzig und alleine darin vor dem Laden des Produktes noch den Store zu definieren.
Zuerst erstellen wir ein Standard-Produkt über das Product-Model:
require_once dirname(__FILE__).'/app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$product = Mage::getModel('catalog/product');
$product->setAttributeSetId( 1 ); // Id kann abweichen
$product->setVisibility(4); // Produkt soll in Katalog und Suche sichtbar sein
$product->setStatus(1); // Produkt soll aktiv sein
$product->setSku("webguys-1234"); // Die Artikel-Nr. lautet webguys-1234
$product->setName("Hello World"); // Das soll später übersetzen werden
$product->setStoreId( 1 );
$product->setWebsiteIds(array(1));
$product->save();
Jetzt haben wir ein kleines Basisprodukt importiert. Zugegeben fehlen natürlich ein paar Hauptattribute wie z.B. der Preis aber der soll für diesen Artikel keine Rolle spielen.
Nun wollen wir das gerade erstellte Produkt in eine andere Sprache, also in einer anderen Store-View pflegen:
$product = Mage::getModel('catalog/product');
$product->setStoreId(2);
$product->load( $productid );
$product->setName( "Hallo Welt!" ); // Und jetzt die deutsche Übersetzung
$product->save();
Schwups ist das Produkt in zwei Store-Views und somit mehrsprachig verfügbar. Zu beachten ist das ausschließlich Attribute importiert werden sollten die sich vom Hauptstore auch logisch unterscheiden können – sonst macht es nur unnötigen Aufwand und kostet Rechenzeit.
Der Autor
Tobias Vogt arbeitet seit 2008 mit Magento und ist seit 2011 durch Magento zertifizierter Entwickler. Beschäftigt ist er bei der code-x GmbH, einer Agentur für Internet und Marketing aus Paderborn. Er gehört zum Gründer-Team der Webguys und ist seit November 2011 Bachelor of Science (Wirtschaftsinformatik). Sie erreichen Ihn per E-Mail unter tobi@webguys.de.




Sehr nützlicher Beitrag für mich, da ich bisher noch keine Möglichkeit gefunden habe für den Store View andere, nämlich übersetzte Attributwerte zu übergeben. Ich bin bisher wahrscheinlich nicht drauf gestoßen, weil ich nach einer Methode gesucht habe, die in irgendeiner Form “Store View” im Namen trägt. Dein Skript-Schnipsel habe ich bisher noch nicht getestet, aber an die oben genannte Methode “setStoreId” wird als Parameter die Store-View-ID übergeben oder habe ich da etwas missverstanden?
Völlig richtig. Erst die StoreId mittels setStoreId setzen und dann die Abweichungen für den jeweiligen Store einpflegen. Möchtest du das Produkt für einen speziellen Store laden musst du vor dem Laden setStoreId aufrufen
Vielen Dank für die schnelle Reaktion
Für mich gibt es nur einen Unterschied zwischen Store und Store-View, daher wundert mich die Bezeichnung der Methode. Ganz oben sprichst du auch von Store View, weiter unten aber wieder von Store. In meinem Fall geht es um Folgendes:
Default Website
- Default Store
– Deutsch
– English
Ich sehe allerdings gerade im Magento-Backend, in der Store-Verwaltung die Links zum Bearbeiten der Store-Views, sehen so aus:
http://www.example.com/index.php/admin/system_store/editStore/store_id/1/
http://www.example.com/index.php/admin/system_store/editStore/store_id/2/
Augenscheinlich wechselt hier die Terminologie zwischen. Die Bearbeitung der Store’s ruft im Backend die Action “editGroup” auf. Na das soll einer verstehen. Vielen Dank für’s Licht-ins-Dunkle-bringen
Hey,
vielen Dank für das Script. Ich scheitere gerade daran die individuellen Optionen mehrsprachig zu importieren.
Sowas mal gemacht?
Das Script was ich mir gebaut habe legt leider in jeder Sprache alle optionen an. Ich lösche erst alle Optionen und mache dann für jede Sprache etwas in der Art
$product = Mage::getModel(“catalog/product”)->load($p->getId())->setStoreId(1);
$opt = Mage::getModel(‘catalog/product_option’);
$opt->setProduct($product);
…
$opt->addOption($options);
$opt->saveOptions();
$product->setRequiredOptions(true);
$product->setHasOptions(true);
$product->save();
Finde leider nichts im Netz.
Danke.