Add SEO-URLs to Product (while create) via Admin API is not working

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:

  1. Vielleicht wird die ID des SEO-URL-Eintrags in einer anderen Tabelle „registriert“
  2. 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.

Nicht 100% sicher, ob ich alles verstanden habe, habe den Text schnell Überfolgen. Kann es theoretisch sein, das Aufgaben in den Messenger geschoben werden und noch nicht alle abgearbeitet wurden? Die Tabelle wäre enqueue.

Hey Max, die Tabelle ist leer :confused:

Hi @ambi-dev !
Es ist ja etwas mehr als ein Jahr her, dass Du diesen Thread eröffnet hattest. Konntest Du das Problem lösen? Ich habe dasselbe Problem (ohne API) und finde aktuell leider keinen Weg zur Lösung.
Wäre toll, wenn Du Dich nochmals melden könntest.

Hey @csrn,

ja ich konnte das ganze „lösen“ auch wenn ich es nicht Lösung nenn würde :D.
Ich habe auf der Datenbank in der seo_url Tabelle sämtliche LanguageIds auf die deutsche LanguageID gesetzt, dann hat es wie erwartet funktioniert. Ich gehe also davon aus, dass da was mit der Sprache verbuggt ist.

Vielen lieben Dank für die schnelle Rückmeldung @ambi-dev !
Das heißt, Du hast die languageIds anderer Sprachen mit der deutschen languageID überschrieben und dann klappte die Sprachumschaltung in andere Sprachen mitsamt ihrer eigenen urls? Beispiel: /produkte und /products? Das wäre echt irre, wenn das geht. :smiley:

Also meine Tabelle ist geschützt durch unique constraints. Das kann bei mir leider nicht funktionieren, die language_ids zu überschreiben. Dafür müsste ich die Integrität der Tabelle aufgeben.