REST API, Translations, Artikel Attribute

Hallo zusammen,

ich stehe vor folgendem Problem:
Über die Rest-API lege ich einen neuen Artikel an. Im zweiten Schritt lege ich für den eben angelegten Artikel die Übersetzungen für die Sprachshops an.
Die Übersetzung wird ohne Fehler angelegt, allerdings werden die konfigurierten Freitextfelder nicht übersetzt.

$shopware_resource = "translations";
$shopware_method = "METHOD_POST";
	
$shopware_data = array( 'key' => 3251, 
                        'type' => 'article',
                        'shopId' => 2,
                        'data' => array(
							'name' => 'Article title',
							'description' => 'Article description short',
							'descriptionLong' => 'Article description long',
							'keywords' => 'Article keywords',
							'metaTitle' => 'Article meta title',
							'attr2' => 'Attribute 2',
				        )			
                    );

Um diese ‘attr2’ geht es. Ich habe schon verschiedene Kombinationen probiert, u.a. auch die gleiche Verschachtelung beim Anlegen oder “en_attr2” oder “attr2_2” etc. Die Übersetzung kommt einfach nicht an.

Wer weiß, wie es geht? Und geht es überhaupt?

Vielen Dank und beste Grüße

Andreas

Hi KOBAB,

die Attribute hängen nicht an der Article Resource sondern an der Detail Resource:
REST API - Models
(Also nicht am Shopware\Models\Article\Article Model sondern Shopware\Models\Article\Detail )

Ich vermute mal daran wird es liegen. 

Viele Grüße

1 Like

Hallo simkli,

ja, beim Erzeugen eines neuen Artikels über die API kommen die Attribute verschachtelt unter ‚mainDetail‘.
Bei den Translations scheint der Aufbau aber nicht zu greifen. Auch habe ich schon versucht die Resource direkt anzuzsprechen und bekomme zwar ein „Ok“ als Rückmeldung, übersetzt sind die Attribute aber trotzdem nicht.

 

$shopware_resource = "translations";
$shopware_method = "METHOD_POST";
	
$shopware_data = array( 'key' => 3251, 
                         'type' => 'attribute',
                         'shopId' => 2,
                         'data' => array(
			     'attr2' => 'Translated',
		             'attr5' => '2'
		          )			
                       );

 

Hi KOBAB,

versuche mal folgendes:

$api->post('translations', [
    'key' => 3251, // muss die ID aus s_articles_detail sein nicht s_articles !!!
    'type' => 'variant',// hier variant benutzen 
    'shopId' => 2, // subshop ID
    'data' => [
            'attr2' => 'Translated',
    ]
]);

Viele Grüße

1 Like

Danke für deine Tipps.

Ich habe mit Adminer nachgeschaut. Die gewünschten Übersetzungen laden in der Tabelle s_articles_translations (Beschreibungen, Keywords und attribute 1-6).

Der neue Artikel bekommt die ID 3253 in (s_articles).
Die Details zum Artikel stehen in (s_articles_details) mit ID 3578 und articleID 3523.
Die Attribute zum Artikel stehen in (s_articles_attributes) mit ID 3573 und articleID 3523 und articleDetailID 3578

In (s_articles_translations) finden sich genau die Daten, die ich via REST API übertragen habe.
ID => 6
articleID => 3253
languageID => 2

attr2 => Translated

Im Sprachshop werden die Daten aus der Translations verwendet, jedoch nicht die Attribute 1-6, obwohl diese Daten gefüllt sind.

Und jetzt wird es merkwürdig:
Ich kann über das Backend die Sprachversion vom Artikel ändern -> die Daten landen in der s_articles_attributes.
Ändere ich den Datensatz in s_articles_attributes kommen diese Änderungen nicht im Backend/Frontend an.

Die s_articles_translations scheint ein Backup zu sein. Die verwendeten Übersetzungen im Sprachshop scheinen noch woanders zu stehen.
Das würde erklären, warum man offenbar die Attribute nicht direkt mit übersetzen kann:

Hast du (oder hat jemand) eine Idee, wo ich gucken kann? In s_articles, s_articles_details und s_articles_attributes stehen immer nur die deutschen Werte drin.

Danke.

Andreas

Update:

Mittlerweile ist auch die Doku (REST API - Examples using the translation resource) angepasst und zeigt, wie es geht:

Die Freitextfelder werden mit __attribute_{NAME} übergeben.

$shopware_data = array( 'key' => $id, 
					    'type' => 'article',
					    'shopId' => $language_id_subshop,
					    'data' => array(
						    'name' => $article_title,
						    'description' => $article_description,
						    'descriptionLong' => $article_descriptionlong,
						    'keywords' => $article_keywords,
						    'metaTitle' => $article_title,
					        '__attribute_attr1' => $article_attr1,
					        '__attribute_attr2' => $article_attr2,
					        '__attribute_attr5' => $article_attr5,
							)    
						);