Hallo zusammen, ich schreibe gerade ein Backend PlugIn, was Artikeleigenschaften per CSV importieren soll, dazu nutze ich die Funktion sArticleAttributeGroup der Import-API. Das funktioniert auch soweit gut. Ich möchte aber nur Eigenschaften hinzufügen bzw. bestehende aktualisieren. Beispiel: Artikel XY besitzt 2 Eigenschaften, „Größe“ und „Preis“. Via CSV soll jetzt noch die Eigenschat „Farbe“ ergänzt werden. Mit der Importfunktion „sArticleAttributeGroup“ habe ich am Ende nur noch die Eigenschaft „Farbe“. Kann ich bereits bestehende Eigenschaften auslesen bzw. den Aufruf so gestalten, dass die anderen Eigenschaften erhalten bleiben? Über ein paar Tipps würde ich mich freuen. LG Pascal
Ist das ein 3.5.0 Plugin? Also realisierst du den Import in einem Controller? Dann kannst du dir die Eigenschaften zum Artikel über die Methode Shopware()->Modules()->Articles()->sGetArticleProperties($articleID,$filtergroupID); holen.
Hallo Stefan, danke für das Feedback. Ich habe das Problem mittlerweile über eine Datenbankabfrage gelöst, ist vielleicht nicht ganz so elegant… So sieht meine Lösung jetzt aus: // ID der Eigenschaft ermitteln $intOptionID = Shopware()-\>Db()-\>fetchOne(" SELECT id FROM s\_filter\_options WHERE name = ? ",array($strAttributeName)); // Bisherige Eigenschaftzuordnung Löschen Shopware()-\>Db()-\>query(" DELETE FROM s\_filter\_values WHERE groupID = ? AND optionID = ? AND articleID = ? ",array($intAttributeGroupId, $intOptionID, $intArticleId)); // Eigenschaft(en) eintragen if (is\_array($mxdAttributeValue)) { foreach ($mxdAttributeValue as $strAttributeValue) { Shopware()-\>Db()-\>query(" INSERT INTO s\_filter\_values (groupID,optionID,articleID,value) VALUES (?,?,?,?) ",array($intAttributeGroupId, $intOptionID, $intArticleId, $strAttributeValue)); } } else { Shopware()-\>Db()-\>query(" INSERT INTO s\_filter\_values (groupID,optionID,articleID,value) VALUES (?,?,?,?) ",array($intAttributeGroupId, $intOptionID, $intArticleId, $mxdAttributeValue)); }
Viele Grüße Pascal