Du siehst Dir gerade den Artikel zu einer älteren Shopware Version an!
In den SEO-Einstellungen kannst Du die Struktur für die SEO-URLs der Produktdetailseiten und Kategorien definieren. Hierzu steht Dir eine Vielzahl an Variablen zur Verfügung.
Die SEO Einstellungen findest Du unter den Einstellungen.
Über den Punkt Verkaufskanal (1) legst Du fest, ob Du die Konfiguration global für alle Verkaufskanäle oder nur für einen ausgewählten Verkaufskanal vornehmen möchtest.
Wenn Du einen speziellen Verkaufskanal ausgewählt hast und wieder zur allgemeinen Einstellung zurück wechseln möchtest, reicht es aus, in das Auswahlfeld zu klicken und den Inhalt heraus zu löschen. Anschließend wird Dir wieder "Alle Verkaufskanäle" angezeigt.
In der ersten Zeile kannst Du das Template für die URL der Produktdetailseite (2) definieren. Beachte hierbei, dass die Variablen im Twig-Format angegeben werden müssen. Der Aufbau ist hier wie folgt:
{{ product.name }}
Neben dem Feld zeigt Dir ein Symbol an, ob die im SEO-Template hinterlegten Variablen valide sind.
Rechts neben dem Feld für das SEO-URL -Template kannst Du aus diversen Variablen wählen. Diese werden durch einen Klick auf die Variable automatisch hinten an das SEO-Template angefügt.
Hierbei ist jedoch zu beachten, dass die Variablen mehrstufig sein können und diese nicht vollständig hinzugefügt werden. Dies erfordert eine anschließende manuelle Anpassung im SEO-Template-Feld. Die vollständigen Variablen findest Du in der unten aufgeführten Liste.
Ein Beispiel für eine nicht vollständige Variable ist der im Standard-Template eingetragene
{{ product.translated.name }}
In der Auswahl auf der rechten Seite wird die Variable
{{ product.translated }}
ausgegeben. Diese ist jedoch eine "mehrstufige" Variable und erfordert die vollständige Angabe der weiteren Stufe. Hier ist es also erforderlich, manuell das
.name
zu ergänzen.
Als Info: Wenn man einene Produktnamen hat der länger als bsp. 50 Zeichen ist und diesen in der SEO-URL kürzen möchte kann man diese Variable verwenden
{{ product.translated.name[:50] }}
Artikel-Variablen
Beschreibung | Variable | |
---|---|---|
Bestellnummer | {{ product.productNumber }} | |
ID | {{ product.id }} | |
Name | {{ product.name }} | |
EAN | {{ product.ean }} | |
Herstellername | {{ product.manufacturer.name }} | |
Veröffentlichungsdatum | {{ product.releaseDate }} | |
Meta Titel | {{ product.metaTitle }} | |
Beschreibung | {{ product.description }} | |
Keywords | {{ product.keywords }} | |
Breadcrumb | {% for part in product.mainCategory.breadcrumb %}{{ part }}/{% endfor %} | |
ParentID | {{ product.parentId }} | |
ChildCount (Anzahl der Varianten) | {{ product.childCount }} | |
Autoincrement | {{ product.autoIncrement }} | |
SteuerID | {{ product.taxId }} | |
HerstellerID | {{ product.manufacturerId }} | |
EinheitID | {{ product.unitId }} | |
Aktiv | {{ product.active }} | |
DisplayGroup (Gruppe der Varianten) | {{ product.displayGroup }} | |
Preis | {{ product.price }} | |
Herstellernummer | {{ product.manufacturerNumber }} | |
EAN | {{ product.ean }} | |
Verkäufe (Abgeschlossene Verkäufe) | {{ product.sales }} | |
Bestand | {{ product.stock }} | |
Verfügbarer Bestand | {{ product.availableStock }} | |
Verfügbar | {{ product.available }} | |
LieferzeitID | {{ product.deliveryTimeId }} | |
Wiederauffüllzeit in Tagen | {{ product.restockTime }} | |
Abverkauf | {{ product.isCloseout }} | |
Staffelung | {{ product.purchaseSteps }} | |
Maximalabnahme | {{ product.maxPurchase }} | |
Mindestabnahme | {{ product.minPurchase }} | |
Maßeinheit | {{ product.purchaseUnit }} | |
Grundeinheit | { product.referenceUnit }} | |
Versandkostenfrei | {{ product.shippingFree }} | |
Einkaufspreis (Brutto) | {{ product.purchasePrices }} | |
Produkt hervorheben | {{ product.markAsTopseller }} | |
Gewicht | {{ product.weight }} | |
Breite | {{ product.width }} | |
Höhe | {{ product.height }} | |
Länge | {{ product.length }} | |
Erscheinungsdatum | {{ product.releaseDate }} | |
KategoriezuweisungsID | {{ product.categoryTree }} | |
VariantenausprägungsID | {{ product.optionIds }} | |
EigenschaftenID | {{ product.propertyIds }} | |
MetaBeschreibung | {{ product.metaDescription }} | |
MetaTitel | {{ product.metaTitle }} | |
Verpackungseinheit | {{ product.packUnit }} | |
Verpackungseinheit-Mehrzahl | {{ product.packUnitPlural }} | |
Ausprägungsausschluss | {{ product.variantRestrictions }} | |
Anzeigereihenfolge | {{ product.configuratorGroupConfig }} | |
HauptvariantenID | {{ product.mainVariantId }} | |
Produktkonfigurationen | {{ product.variation }} | |
Steuer | {{ product.tax }} | |
Hersteller | {{ product.manufacturer }} | |
LayoutID | {{ product.cmsPageId }} | |
LayoutSlot | {{ product.slotConfig }} | |
Kategorieinformationen der direkt zugewiesenen Kategorien | {{ product.categories }} | |
Medien CoverID | {{ product.coverId }} | |
Alle Customfieldwerte des Produktes | {{ product.translated.customFields }} | |
TagIDs | {{ product.tagIds }} | |
Durschnittliche Produktbewertung Nummerisch | {{ product.ratingAverage }} | |
Hauptkategorie | {{ product.mainCategories }} | |
Internes Speicherobjekt für die günstigste Preisermittlung | {{ product.cheapestPriceContainer }} | |
Interne Referenz der ID des Produktes (Sollte nicht genutzt werden) | {{ product._uniqueIdentifier }} | |
ID der Version des Produktes | {{ product.versionId }} | |
Beinhaltet alle übersetzten Werte des Produktes | {{ product.translated }} | |
Einstellungsdatum | {{ product.createdAt }} | |
Letzte Änderung/Update | {{ product.updatedAt }} | |
Erweiterungen des Produktes (Pluginerweiterungen) | {{ product.extensions }} | |
ProduktID | {{ product.id }} | |
VersionID des Elternproduktes | {{ product.parentVersionId }} | |
VersionsID des hinterlgten Herstellers | {{ product.productManufacturerVersionId }} | |
VersionsID des Covers | {{ product.productMediaVersionId }} | |
VersionsID des hinterlegten CMS-Layout | {{ product.cmsPageVersionId }} | |
Inhalt des Zusatzfeldes | {{ product.customFields.NamedesFeldes }} |
Generell stehen weitere Variablen zur Verfügung. Da Diese jedoch Inhalte bereitstellen, die zu regelmäßigen Änderungen der URL führen und dies zu einer negativen Beeinflussung im Ranking führt, gehen wir an dieser Stelle nicht weiter darauf ein.
Im zweiten Feld ist die Anpassung des Template für die Landingpage (3) möglich. Im Standard wird hier die URL verwendet, die Du in den Einstellungen der Landingpage vergeben kannst. Solltest Du das Template für die Landingpages anpassen wollen, stehen Dir die folgenden Variablen zur Verfügung.
Beispiele für Landingpage-Variablen
Beschreibung | Variable |
Eine 1, wenn die Landingpage aktiv ist. Sonst eine 0 | {{landingPage.active}} |
UUID des der Landingpage zugewiesenem Layouts | {{landingPage.cmsPageId}} |
Name der Landingpage | {{landingPage.name}} |
metaTitle der Landingpage | {{landingPage.metaTitle}} |
metaDescription der Landingpage | {{landingPage.metaTitle}} |
Keywords der Landingpage | {{landingPage.keywords}} |
SEO URL der Landingpage | {{landingPage.url}} |
UUID der Landingpage | {{landingPage.uniqueIdentifier}} |
Versions ID der Landingpage | {{landingPage.verionID}} |
Datum der Erstellung der Landingpage | {{landingPage.createdAt}} |
Datum der letzten Änderung der Landingpage | {{landingPage.updatedAt}} |
Erweiterungen haben hier potentiell die Möglichkeit eigene Werte zu hinterlegen. | {{landingPage.extensions}} |
Inhalt des Zusatzfeldes | {{landingPage.customFields.NamedesFeldes}} |
Versions ID des dee Landingpage zugewiesenem Layouts | {{landingPage.cmsPageVersionId}} |
Generell stehen weitere Variablen zur Verfügung. Da Diese jedoch Inhalte bereitstellen, die zu regelmäßigen Änderungen der URL führen und dies zu einer negativen Beeinflussung im Ranking führt, empfehlen wir diese nicht zu verwenden und gehen wir an dieser Stelle nicht weiter darauf ein.
Im dritten Feld ist die Anpassung des Template für die Kategorieseiten (4) möglich. Im Standard wird hier die Kategoriestruktur (der sogenannte Breadcrumb) verwendet. Solltest Du das Template für die Kategorien anpassen wollen, stehen Dir die folgenden Variablen zur Verfügung
Beispiele für Kategorie-Variablen
Beschreibung | Variable | |
---|---|---|
Breadcrumb | {% for part in category.seoBreadcrumb %}{{ part }}/{% endfor %} | |
ID | {{ category.id }} | |
Name | {{ category.translated.name }} | |
Meta-Titel | {{ category.translated.metaTitle }} | |
Beschreibung | {{ category.description }} | |
Meta-Beschreibung | {{ category.translated.description }} | |
Kategorie | {{ category }} | |
ID der übergeordneten Kategorie | {{ category.parentId }} | |
Automatische Aufzählung in der Datenbank | {{ category.autoIncrement }} | |
ID des zugewiesenen Bildes | {{ category.mediaId }} | |
ID`s des Kategoriepfades | {{ category.path }} | |
Kategorienebene | {{ category.level }} | |
Aktiv | {{ category.active }} | |
Anzahl der Unterkategorien | {{ category.childCount }} | |
Wird nicht mehr genutzt | {{ category.displayNestedProducts }} | |
Nächst untergeordnete Kategorie | {{ category.afterCategoryId }} | |
Zusatzfelder | {{ category.translated.customFields }} | |
ID des zugewiesenen Layouts | {{ category.cmsPageId }} | |
Produktstream ID | {{ category.productStreamId }} | |
Sollte nicht genutzt werden | {{ category.slotConfig }} | |
Eingetragener Typ des Links. Produkt, Kategorie, Landingpage oder external | {{ category.translated.linkType }} | |
Wird der Link in einem neuen Tab geöffnet? 1 oder 0 | {{ category.translated.linkNewTab }} | |
Interner Link | {{ category.translated.internalLink }} | |
Externer Link | {{ category.translated.externalLink }} | |
In der Navigation ausblenden | {{ category.visible }} | |
Typ der Kategorie page, link oder folder | {{ category.type }} | |
Produkt-Zuweisung Manuelle Ausswahl oder Dynamische Produktgruppe | {{ category.productAssignmentType }} | |
Keywords | {{ category.translated.keywords }} | |
Produktzuweisungen der jeweiligen Saleschannel | {{ category.mainCategories }} | |
SEOUrls | {{ category.seoUrls }} | |
Eindeutiger Bezeichner | {{ category._uniqueIdentifier }} | |
VersionsID | {{ category.versionId }} | |
Erstellungsdatum | {{ category.createdAt }} | |
Geändert am | {{ category.updatedAt }} | |
Erweiterungen der Kategorie | {{ category.extensions }} | |
ID der Übergeordneten Kategorie | {{ category.parentVersionId }} | |
Nächst untergeordnete KategorieversionID | {{ category.afterCategoryVersionId }} | |
VersionID des Layouts | {{ category.cmsPageVersionId }} | |
Zughöriger Breadcrumb | {{ category.seoBreadcrumb }} |
Generell stehen weitere Variablen zur Verfügung. Da Diese jedoch Inhalte bereitstellen, die zu regelmäßigen Änderungen der URL führen und dies zu einer negativen Beeinflussung im Ranking führt, empfehlen wir diese nicht zu verwenden und gehen wir an dieser Stelle nicht weiter darauf ein.
Es ist zusätzlich möglich, Filter in das SEO-Template einzubauen. Hierdurch kann z.B. die gesamte URL klein geschrieben werden.
Die Filter werden mit einen "|" getrennt hinter der Variable innerhalb der {{}} angefügt.
Für die Kleinschreibung des Produktnamens wäre dies z.B. wie folgt möglich
ohne Filter
{{ product.translated.name }}/{{ product.productNumber }}
mit Filter
{{ product.translated.name|lower }}/{{ product.productNumber }}
Bei einer FOR-Schleife wird dies im {{ part|lower }} angehangen. Für Kategorieseiten sieht dies z.B. so aus
ohne Filter
{% for part in category.seoBreadcrumb %}{{ part }}/{% endfor %}
mit Filter
{% for part in category.seoBreadcrumb %}{{ part|lower }}/{% endfor %}
Generell kannst Du die verfügbaren Twig-Filter verwenden. Weitere Informationen hierzu findest Du in der Twig-Dokumentation unter https://twig.symfony.com/doc/3.x/filters/index.html
Die Funktion Statt Canonical URLs direkt per HTTP 301 auf die aktuellste URL leiten (5) ermöglicht es, bei geänderten URLs eine HTTP-301-Weiterleitung auszugeben. Ist die Funktion deaktiviert, wird im Browser kein Hinweis zu der Weiterleitung ausgegeben.
Nachdem Du Änderungen am SEO-Template vorgenommen hast, ist es erforderlich, den Index neu aufzubauen, damit die URLs aktualisiert werden.
Dies ist über die Konsole mittels des Befehls
php bin/console dal:refresh:index
möglich.
Eine kanonische URL ist die URL der Seite, von der die Suchmaschine annimmt, dass sie die repräsentativste von mehreren duplizierten Seiten auf deiner Website ist. Wenn du beispielsweise mehrere URLs für dieselbe Seite hast, z. B. example.com?dress=1234
und example.com/dresses/1234
, wählt die Suchmaschine eine davon als kanonische URL aus.
Die Seiten müssen nicht absolut identisch sein. Kleinere Änderungen an Listen, z. B. eine Sortierung nach Preis oder eine Filterung nach Artikelfarbe, führen nicht dazu, dass die Seite als eigenständige, separate Seite betrachtet wird. Die kanonische URL kann sich auch in einer anderen Domain befinden als das Duplikat.