Canonical URLs können teilweise nicht erzeugt werden

Moin,

kann mir jemand erklären, wie das mit den Canononical-URLs bzw. SEO-freundlichen URLs funktioniert? Ich stehe vor folgendem Problem:

Bei manchen Artikel in meinem Shop werden die URLs wie gewünscht erzeugt, bei anderen Artikel wiederum nicht und ich kann hierbei kein Muster erkennen. Bearbeite ich einen Artikel ohne Canonical URL heißt es im Abschnitt Canonical URL “Es sind noch keine Canonical Urls vorhanden.”. Darunter ist das Drop-Down um die Hauptkategorie auszuwählen, welches aber ausgegraut ist und nicht editierbar ist. Andere Möglichkeiten habe ich nicht.

Bei den Artikel mit vorhandener Canonical URL ist das Feld hier auswählbar. Ich habe wie gesagt keine Ahnung, was diese Artikel voneinander unterscheidet, in der Dokumentation habe ich leider auch keine Hinweise finden können. 

Hat jemand von euch eine Idee?

Vorab zwei Fragen dazu:

  • Arbeitest du mit Varianten und dort geht es nicht, oder hast du diesen Effekt auch bei Einzelartikel?
  • Hast du was bei Einstellungen -> SEO geändert, wenn ja was.

@frezno schrieb:

Vorab zwei Fragen dazu:

  • Arbeitest du mit Varianten und dort geht es nicht, oder hast du diesen Effekt auch bei Einzelartikel?
  • Hast du was bei Einstellungen -> SEO geändert, wenn ja was.

Das Problem tritt - so weit ich das sehe - nur bei Artikeln mit Varianten auf. Ich habe aber auch Artikel mit Varianten, bei denen es funktioniert.

Und nein, ich habe keine Änderungen im Bereich SEO vorgenommen.

Gibts vielleicht Dopplungen bei den URLs, sodass die Produkte keine URLs erhalten?

Typischerweise kann das passieren, wenn man bspw. die Produktnummer o.ä. Dinge die Eindeutig sind, nicht in der URL verwendet.

Nein, eigentlich nicht. Ich habe an den Canonical URLs zwar nichts geändert, aber es gibt halt immer identische Fälle.

Bier A wird als Einzelflasche und als 4er-Träger angeboten. Alle Versionen haben eine Canonical URL.

Bier B wird ebenfalls als Einzelflasche und als 4er-Träger angeboten. Hier ist keine Canonical möglich. Die Artikel sind wirklich identisch und die Varianten werden gleich erzeugt.

Wie sieht dein URL template denn aus? Ist da ein unique identifier drin? Sonst ist das definitiv dein Problem, wenn die URL die gleiche wäre

Produktdetailseite sieht so aus

{% for part in  product.categories %}/{{ product.translated.name }}/{% endfor %}

und Kategorieseite so

{% for part in category.seoBreadcrumb %}{{ part }}/{% endfor %}

@ofinzel schrieb:

@frezno schrieb:

Vorab zwei Fragen dazu:

  • […]
  • Hast du was bei Einstellungen -> SEO geändert, wenn ja was.

[…]

Und nein, ich habe keine Änderungen im Bereich SEO vorgenommen.

[…]

{% for part in  product.categories %}/{{ product.translated.name }}/{% endfor %}

 hast du ja doch, wie soll man dir da vernünftig helfen können   Lips-are-sealed

SO wird das nichts.
Du musst bei der Produktdetailseite dem Produkt einen eindeutigen Identifier liefern, andernfalls kollabiert das System in der von dir beschriebenen Art und Weise.​
Also füge dem Produktnamen noch die Artikelnummer hinzu ( {{ product.productNumber }} ) und dann klappt es.
Und lass den Slash am Ende weg. Der wird nur für Verzeichnisse verwendet, nicht für (in dem Fall) ein Produkt.

Ob das mit dem for endfor klappt, kann ich diur aus dem Stegreif nicht sagen. Im Zweifelsfall (erstmal) weglassen und
eine Variante wählen, die definitiv funktioniert:
{{ product.translated.name }}/{{ product.productNumber }}

Und denk dran auf der Console den (seo) Index aufzufrischen, denn sonst werden die Änderungen uU vorerst nicht aktiv, bzw. sichtbar:
php bin/console dal:refresh:index

Meine SEO URL sieht jetzt wie folgt aus

{% for part in  product.categories %}/{{ product.translated.name }}/{{ product.productNumber }}{% endfor %}

Das sollte jetzt ja so passen? Den Index habe ich auch per Konsole aufgefrischt, es hat keine Änderung gebracht.

Das entsprechende Feld beim Produkt ist auch nach wie vor ausgegraut, siehe Screenshot

mach halt erstmal das, was 100%ig klappt:
{{ product.translated.name }}/{{ product.productNumber }}

und dann kannst du Schritt für Schritt was ändern. Bei schrittweisen Änderungen siehst du dann, wobei ein Fehler auftritt.

Kann sein, dass du die Artikel neu anlegen musst, weil sie in der DB schon ziemlich vermurkst sind.

Die Canonicals im Produkt sind auch nur dazu da, die generierte URL zu überschreiben. Also Shopware generiert aus dem Template automatisch eine URL, wenn man die allerdings ändern will, kann man das dann im Produkt. Im Produkt wird es halt nur angezeigt, wenn die URL auch automatisch generiert werden konnte.