Markus Michalski FAQ

Sylius SEO Suite Pro: Konfiguration

Konfiguration der Sylius SEO Suite Pro: Channel-Einstellungen, robots.txt, Facets, globale YAML-Konfiguration, Admin-Grids, Felder pro Produkt und Kategorie sowie die Head-Ausgabe der Storefront.

English Version

Zurück zur Übersicht

Sylius SEO Suite Pro: Konfiguration

Die Einstellungen des Plugins liegen an zwei Stellen: pro Channel im Admin-Bereich (in der Datenbank) und global in einer YAML-Datei. Auf dieser Seite findest Du beides, soweit es keiner eigenen Funktionsseite gehört.

Admin-Bereich

Das Plugin legt genau einen Eintrag in der Seitenleiste an: MMKreativ Plugins > SEO Suite Pro. Er führt zur Liste der Channel-Einstellungen. Alle anderen Bildschirme erreichst Du über Buttons in der Aktionsleiste oben auf den jeweiligen Seiten:

Unter dem Seitentitel der Plugin-Listen steht die installierte Plugin-Version.

Sind die Admin-Routen nicht importiert, fehlt der Menüeintrag stillschweigend. Prüfe dann die Routen-Datei aus der Installation.

Alles wird pro Channel konfiguriert. Channel-Einstellungen, SEO-Templates, Schema-, hreflang- und OG-Bild-Einstellungen sowie Redirects gehören jeweils zu einem Channel (bei Templates und Redirects ist auch "alle Channels" möglich). Hat ein Channel keine Zeile, gelten die Standardwerte.

Channel-Einstellungen

Pro Channel gibt es höchstens eine Zeile. Beim Anlegen wählst Du den Channel aus, danach lässt er sich nicht mehr ändern.

Einstellung Standard Beschreibung
Inhalt der robots.txt leer Wird unter /robots.txt des Channels ausgeliefert. Leer bedeutet User-agent: * und Allow: /.
Facetten-/Filterseiten sind indexierbar aus Ob gefilterte und sortierte Listings index statt noindex bekommen.
Facetten-/Filterseiten dürfen gecrawlt werden an Ob Crawler den Links auf gefilterten und sortierten Listings folgen dürfen (follow statt nofollow).
Open-Graph- und Twitter-Card-Tags ausgeben an Schaltet die Social-Tags für den Channel ein oder aus. Gilt auch, wenn der Channel keine Zeile hat.
Seitenname leer Wird als og:site_name ausgegeben. Leer verwendet den Channel-Namen.
Standardbild leer Absolute URL (maximal 255 Zeichen), die für Seiten ohne eigenes Bild als og:image dient. Empfohlen: 1200 x 630 Pixel.
X/Twitter-Konto des Shops leer Handle mit führendem @, zum Beispiel @sofashop (maximal 15 Zeichen nach dem @). Leer gibt nichts aus.
X/Twitter-Konto des Autors leer Wie oben, wird als twitter:creator ausgegeben.

robots.txt

Die Route /robots.txt löst den Channel über den Host auf und liefert den Inhalt aus den Channel-Einstellungen als text/plain.

Das Plugin rät nie, was gesperrt werden soll. Prüfe vor dem Go-Live, dass im Feld der echte Inhalt steht, denn leer heißt: alles darf gecrawlt werden.

Facets

Ein Listing zählt als Facet, wenn die URL einen der konfigurierten Query-Parameter (facet_parameters) mit nicht-leerem Wert enthält, standardmäßig criteria, sorting und limit. Die Seitennummer (?page=2) ist bewusst kein Facet: Seite 2 ist echter Inhalt und bleibt index, follow.

Eine Facet-Seite bekommt statt der normalen Robots-Angabe die Channel-Vorgabe, ab Werk noindex, follow: Suchmaschinen überspringen die Variante, folgen aber ihren Links. Ist die Kategorie selbst auf noindex oder nofollow gestellt, bleibt das so, die strengere Angabe gewinnt. Der Canonical bleibt die URL ohne Filter, Sortierung und Tracking-Parameter (nur die Seitennummer bleibt erhalten). Das Plugin erkennt Facets bei Kategorie-Listings allein am Query-String. Eine Filternavigation, die auf einem eigenen URL-Pfad liegt, erkennt es nicht.

Globale Konfiguration

Alle Schlüssel sind optional und liegen unter dem Root mmd_sylius_seo_suite_pro in config/packages/mmd_sylius_seo_suite_pro.yaml. Die folgenden drei gehören keiner eigenen Funktionsseite:

Schlüssel Standard Beschreibung
facet_parameters [criteria, sorting, limit] Query-Parameter, die ein Listing zur Facet-Variante machen. page gehört bewusst nicht dazu.
image_base_path /media/image/ Pfad, unter dem lokale Produktbilder ausgeliefert werden. Er dient für og:image und das Bild im JSON-LD.
brand_attribute_code brand Code des Produktattributs mit dem Markennamen (für die Marke im JSON-LD). Hat ein Produkt kein solches Attribut, wird keine Marke ausgegeben. Die Schema-Einstellungen eines Channels können den Code überschreiben, siehe Strukturierte Daten.

Die übrigen Bereiche sind auf ihren Funktionsseiten beschrieben. Hier die Übersicht aller Schlüssel:

Schlüssel Standard Beschreibung auf
schema.max_additional_properties 25 Strukturierte Daten
seo_templates.title_max_length 60 SEO-Templates
seo_templates.description_max_length 155 SEO-Templates
hreflang.format language-region hreflang
hreflang.min_alternates 2 hreflang
redirects.auto_on_slug_change true Redirects
redirects.log_not_found true Redirects
redirects.not_found_log_limit 5000 Redirects
og_image.format auto OG-Bilder
og_image.quality 85 OG-Bilder
og_image.cache_dir %kernel.project_dir%/var/mmd_seo_og OG-Bilder
og_image.images_path %kernel.project_dir%/public/media/image OG-Bilder
og_image.public_dir %kernel.project_dir%/public OG-Bilder
og_image.font_regular mitgelieferte DejaVu Sans OG-Bilder
og_image.font_bold mitgelieferte DejaVu Sans Bold OG-Bilder
og_image.remote_hosts [] OG-Bilder
og_image.fetch_timeout 5 OG-Bilder
og_image.render_budget 15 OG-Bilder
og_image.max_source_bytes 8388608 OG-Bilder
og_image.max_source_pixels 25000000 OG-Bilder
audit.keep_runs 3 SEO-Audit
audit.max_subjects 20000 SEO-Audit
audit.stale_after_minutes 10 SEO-Audit
audit.page_size 200 SEO-Audit

Ein Beispiel mit realistischen Werten für einen Shop mit eigenem CDN und Facet-Parametern:

# config/packages/mmd_sylius_seo_suite_pro.yaml
mmd_sylius_seo_suite_pro:
    facet_parameters: [criteria, sorting, limit, color, size]
    image_base_path: /media/image/
    brand_attribute_code: manufacturer
    seo_templates:
        title_max_length: 60
        description_max_length: 155
    hreflang:
        format: language-region
        min_alternates: 2
    redirects:
        auto_on_slug_change: true
        log_not_found: true
        not_found_log_limit: 10000
    audit:
        keep_runs: 3
        max_subjects: 20000
    og_image:
        format: auto
        quality: 85
        remote_hosts: ['cdn.example.com']

Die Werte des Beispiels sind frei gewählt. Übernimm nur die Schlüssel, die Du wirklich ändern willst, denn die Standardwerte passen für die meisten Shops.

Felder pro Produkt und Kategorie

Hast Du die Felder in der Installation freigeschaltet, erscheinen sie im Admin-Bereich beim Bearbeiten eines Produkts oder einer Kategorie im Tab für die Übersetzungen, je Sprache:

Feld Standard Wirkung
Meta-Titel leer Wird als <title> ausgegeben. Leer verwendet den Namen (oder ein SEO-Template). Manuelle Titel werden nie gekürzt.
Canonical-Pfad leer Pfad auf Deinem Shop, der den automatischen Canonical ersetzt, zum Beispiel /moebel/blaues-sofa. Maximal 255 Zeichen, ein führender Slash, keine volle URL.
Suchmaschinen dürfen diese Seite indexieren an Steuert index oder noindex für diese Seite.
Suchmaschinen dürfen Links auf dieser Seite folgen an Steuert follow oder nofollow für diese Seite.
Meta-Beschreibung (nur Kategorien) leer Nur sichtbar, wenn Du das Zusatz-Trait eingebunden hast. Maximal 512 Zeichen. Leer bedeutet: keine Meta-Description. Aus der Kategoriebeschreibung wird nichts abgeleitet.

Bei Produkten verwendest Du die Meta-Description von Sylius selbst.

Admin-Grids

Das Plugin bringt acht Listen (Grids) mit. Alle sind per Buttons verbunden, nur die erste hat einen Seitenleisten-Eintrag.

Grid Zweck Erreichbar über CRUD oder nur Lesen
Channel-Einstellungen robots.txt, Facets, Social-Tags pro Channel Seitenleiste: MMKreativ Plugins > SEO Suite Pro CRUD (anlegen, bearbeiten, löschen)
SEO-Templates Titel- und Description-Regeln Button SEO-Templates bei den Channel-Einstellungen CRUD
hreflang-Einstellungen Gruppen und x-default pro Channel Button hreflang bei den Channel-Einstellungen CRUD
Schema-Einstellungen Attribut-Zuordnung für das JSON-LD Button Strukturierte Daten bei den Channel-Einstellungen CRUD
OG-Bild-Einstellungen Farben, Logo und Optionen der Social-Cards Button OG-Bilder bei den Channel-Einstellungen CRUD, plus Vorschau-Button beim Bearbeiten
Redirects Redirects verwalten Button Weiterleitungen bei den Channel-Einstellungen CRUD plus Massenlöschung, dazu CSV-Import und Export
404-Log Aufgerufene Pfade ohne Redirect Button 404-Log beim Redirect-Grid Lesen, Löschen und Massenlöschen; die Aktion Weiterleitung anlegen öffnet das Formular mit vorausgefülltem Pfad; kein Anlegen oder Bearbeiten
Audit-Befunde Ergebnisse des letzten abgeschlossenen Audit-Laufs Audit-Dashboard (Button SEO-Audit bei den Channel-Einstellungen) Nur Lesen, ohne Aktionen

Das Redirect-Grid filtert nach Suchbegriff, Channel (auch "alle Channels"), Herkunft und Aktiv-Status. Das 404-Log filtert nach Suchbegriff und Channel, die Audit-Befunde nach Subjekt-Code, Channel, Check, Schweregrad und Subjekt-Typ.

Was im Head ausgegeben wird

Das Plugin hängt sich über Twig Hooks in den Head der Storefront ein, ohne ein Template zu überschreiben. Es greift auf Produktseiten, Kategorie-Listings und der Startseite. Warenkorb, Checkout und Kundenkonto bleiben unberührt.

Die Startseite bekommt denselben Satz Tags, aufgebaut aus dem Channel, behält aber den <title> von Sylius (den Channel-Namen). Die Twitter-Card ist summary_large_image, sobald ein Bild vorhanden ist. Ist der Social-Tags-Schalter des Channels aus, entfallen die Open-Graph- und Twitter-Tags, alles andere bleibt.

Praxisbeispiele

robots.txt für einen Shop

Im Feld Inhalt der robots.txt des Channels trägst Du die gewünschten Regeln ein. Da die Shop-URLs von Sylius ein Sprach-Präfix haben, sperrst Du Warenkorb, Checkout und Konto mit Wildcards:

User-agent: *
Disallow: /*/cart/
Disallow: /*/checkout/
Disallow: /*/account/
Sitemap: https://www.example.com/sitemap-index.xml

Die Pfade sind ein Beispiel. Prüfe sie gegen die echten Routen Deines Shops, denn das Plugin kennt Deine URL-Struktur nicht.

Staging-Channel komplett sperren

Hat Dein Staging einen eigenen Channel, sperrst Du ihn mit diesem Inhalt für alle Crawler:

User-agent: *
Disallow: /

Die robots.txt ist eine Bitte an Crawler und kein Zugriffsschutz. Sichere Staging zusätzlich per Passwortschutz ab. Außerdem setzt diese Regel keine noindex-Tags, sie verbietet nur das Crawlen.

Facet-Richtlinie anpassen

Ein Shop mit den Filtern Farbe und Größe will, dass auch diese Varianten als Facet erkannt werden und noindex, follow bekommen. Dafür ergänzt Du in der globalen Konfiguration die Parameter:

mmd_sylius_seo_suite_pro:
    facet_parameters: [criteria, sorting, limit, color, size]

Die Channel-Einstellung Facetten-/Filterseiten sind indexierbar lässt Du aus. Wenn Du bewusst eine Filterkombination indexieren willst (zum Beispiel eine Landingpage für "blaue Sofas"), baust Du dafür besser eine eigene Kategorie, statt Facets freizugeben: Eine Kategorie hat eine eigene URL, einen eigenen Titel und einen eigenen Canonical.

Die Einstellung für Facets gilt für alle gefilterten Listings eines Channels gemeinsam. Es gibt keine Ausnahme pro Filterkombination.