Hallo zusammen,
aktuell bin ich dabei, Produkte mittels Admin API zum Shop hinzuzufügen.
Hierbei füge ich insgesamt ein Produkt inklusive 12 Varianten hinzu. Das funktioniert tadellos, auch wenn der Weg dahin nicht unbedingt einfach war.
Nun gilt es, im nächsten Schritt zu dem Produkt eine explizite SEO-URL hinzuzufügen.
Mein erster Versuch - ich habe mit dem SEO URL Template Builder gearbeitet:
Problem: Die URL wird genauso, wie ich es mir vorstelle angezeigt, funktionieren tut es jedoch nicht. Wenn ich in das Detail meines Produkts springe, wird mir weiterhin angezeigt: domain.de/detail/uuid
Versuch Nummer 2: Ich gebe die SEO-URL direkt beim Erstellen des Produkts mit.
Anbei mein Payload, welchen ich hierbei verwende
const createRes = await fetch(apiUrl, {
method: "POST",
headers: headers,
body: JSON.stringify({
id: payload.shopware_id,
stock: 9999,
productNumber: payload.product_number,
name: payload.name,
description: payload.description,
categories: categoriesShopware,
taxId: TAX_ID,
coverId: coverId,
mainCategories: [...],
seoUrls: [
{
salesChannelId: SALES_CHANNEL_ID,
languageId: LANGID_GERMAN,
foreignKey: payload.shopware_id,
routeName: "frontend.detail.page",
pathInfo: "/detail/" + payload.shopware_id,
seoPathInfo: slug,
createdAt: new Date(),
isCanonical: true,
isDeleted: false,
isModified: true,
}
],
media: [...],
visibilities: [...],
properties: [...],
manufacturerId: MANUFACTURER_ID,
price: [...],
variantListingConfig: {...},
children: [ ... ],
configuratorSettings: [...],
}),
});
So weit zu gut, funktioniert, ich bekomme einen successfully Status und auch in der DB taucht mein Eintrag auf. Werfen wir einen Blick in die Datenbank:
Sieht erstmal solide aus meiner Sicht.
Zur Funktionalität: Meine Produkte werden angezeigt, wenn ich jedoch ins Detail springe, dann bekomme ich einen 404er-Seite nicht gefunden.
Jetzt spinnen wir das Rad weiter. Schauen wir doch mal ins Backend in die SEO Einstellungen vom Produkt:
Sieht in meinen Augen erstmal gut aus.
Jetzt wirds wild. Versuche ich die SEO URL zu ändern und klicke dann auf speichern, dann passiert erstmal nichts. Ich lade die Seite neu und die URL ist noch immer unverändert. Jetzt ändere ich die URL erneut und speichere meine URL erneut. Und siehe da, die Änderung bleibt bestehen und im Shop Frontend funktioniert auch alles wie geplant.
Werfen wir nun einen Blick auf die Datenbank:
So, wir sehen bis auf die ID sind die beiden Einträge identisch. Zu Beginn waren sogar is_canonical, is_modified identsich ich denke das wird durch den neuen Eintrag geändert wurden sein. Wenn ich jetzt jedoch die Werte tausche, also bei is_canonical, komme ich wieder auf eine 404 Seite. Mit dem neuen Eintrag funktioniert alles wie gewohnt.
Meine Frage: Habt Ihr eine Ahnung, was hier schiefläuft?
Meine Annahmen:
- Vielleicht wird die ID des SEO-URL-Eintrags in einer anderen Tabelle „registriert“
- Die Varianten könnten das Problem sein, aber irgendwie glaube ich das nicht
Weitere Äußerungen: ich denke das Problem im SEO Template Builder ohne API ohne alles, einfach nur das Benutzen des Backends sollte ein BUG Request sein. Die URL wird richtig angezeigt, jedoch wird nicht die richtige URL geladen.
Habe bereits zwei Tage in dieses Problem gesteckt, vielleicht hat jemand eine Lösung parat.