Skip to content

csaeum/WSCPluginSWCanonicalURLVariant

Repository files navigation

Shopware 6 Plugin: Canonical URL für Produktvarianten

Version License Shopware PHP

🇬🇧 English | 🇫🇷 Français

Verhindere Duplicate Content: Dieses Plugin setzt automatisch Canonical-Tags bei Produktvarianten, um SEO-Probleme durch doppelte Inhalte zu vermeiden.


📖 Übersicht

Produktvarianten in Shopware 6 haben standardmäßig eigene URLs, was zu Duplicate Content führen kann. Dieses Plugin löst das Problem, indem es Canonical-Tags setzt, die Suchmaschinen auf die Hauptprodukt-URL verweisen.

✨ Features

  • Automatische Canonical-Tags für alle Produktvarianten
  • Multi-Language Support mit intelligenter Vererbung
  • Flexible Konfiguration pro Produkt und Sprache (Active/Inactive/Inherit)
  • Custom URL Override für spezielle Fälle
  • Debug-Logging per Plugin-Konfiguration ein/ausschaltbar
  • Shopware 6.5, 6.6 und 6.7 kompatibel

🚀 Installation

Via Composer (empfohlen)

composer require wsc/plugin-sw-canonical-url-variant
bin/console plugin:refresh
bin/console plugin:install --activate WSCPluginSWCanonicalURLVariant
bin/console cache:clear

Manuelle Installation

  1. Release herunterladen
  2. ZIP-Datei in custom/plugins/ entpacken
  3. Im Shopware Admin aktivieren: Einstellungen → System → Plugins
  4. Cache leeren

⚙️ Konfiguration

Schritt 1: Canonical-Tag Verhalten festlegen

Gehe im Shopware Admin zu einem Hauptprodukt (nicht Variante):

Produkte → [Produkt auswählen] → Custom Fields → P. SEO

Dort findest du das Dropdown-Feld "Canonical-Tag Verhalten" mit 3 Optionen:

🔵 "Von Standard-Sprache erben" (inherit)

  • Verwendet die Einstellung der Standard-Sprache (z.B. Deutsch)
  • Ideal für alle Sprachen, die das gleiche Verhalten haben sollen
  • Standardwert wenn das Feld leer gelassen wird

Wann verwenden?

  • In allen Nicht-Standard-Sprachen (z.B. Englisch, Französisch, Österreich)
  • Wenn die Sprache das gleiche Verhalten wie Deutsch haben soll

🟢 "Aktiv - Canonical auf Hauptartikel setzen" (active)

  • Alle Varianten dieses Produkts verweisen per Canonical-Tag auf das Hauptprodukt
  • Empfohlen für die Standard-Sprache zur Vermeidung von Duplicate Content

Wann verwenden?

  • Immer in der Standard-Sprache (z.B. Deutsch)
  • In anderen Sprachen, wenn explizit überschrieben werden soll

🔴 "Inaktiv - Kein Canonical-Tag setzen" (inactive)

  • Varianten erhalten kein Canonical-Tag
  • Nützlich wenn Varianten separat indexiert werden sollen

Wann verwenden?

  • In spezifischen Sprachen wo Varianten einzeln indexiert werden sollen (z.B. Österreich-Markt)

Multi-Language Konfiguration - So funktioniert die Vererbung

✅ Best Practice: Einmal einstellen, überall aktiv

Standard-Sprache (Deutsch):  "Aktiv"
Englisch:                     "Von Standard-Sprache erben" (oder leer lassen)
Französisch:                  "Von Standard-Sprache erben" (oder leer lassen)
Österreich:                   "Von Standard-Sprache erben" (oder leer lassen)

→ Resultat: Canonical in ALLEN Sprachen aktiv ✓

Tipp: Du kannst "Von Standard-Sprache erben" auch einfach leer lassen - funktioniert genauso! Die explizite Auswahl macht es aber klarer für andere Team-Mitglieder.


✅ Beispiel: Nur in Österreich deaktivieren

Standard-Sprache (Deutsch):  "Aktiv"
Englisch:                     "Von Standard-Sprache erben"
Österreich:                   "Inaktiv"  ← Überschreibt die Vererbung!
Schweiz:                      "Von Standard-Sprache erben"

→ Resultat:
  - Deutsch:    Canonical aktiv ✓
  - Englisch:   Canonical aktiv (erbt von Deutsch) ✓
  - Österreich: Kein Canonical ✓ (explizit deaktiviert)
  - Schweiz:    Canonical aktiv (erbt von Deutsch) ✓

⚠️ Wichtige Regel: Standard-Sprache NIEMALS auf "erben" setzen!

❌ FALSCH:
Standard-Sprache (Deutsch):  "Von Standard-Sprache erben"
Englisch:                     "Von Standard-Sprache erben"

→ Problem: Von wem soll Deutsch erben? Von sich selbst?
→ Resultat: Canonical NIRGENDS aktiv ✗
✅ RICHTIG:
Standard-Sprache (Deutsch):  "Aktiv" oder "Inaktiv"
Englisch:                     "Von Standard-Sprache erben"

→ Englisch erbt die Einstellung von Deutsch ✓

Schritt 2: Custom URL (optional)

Zusätzlich gibt es das Textfeld "eigene Haupt/Vater URL":

  • Leer lassen → Verwendet automatisch die Hauptprodukt-URL
  • URL eintragen → Überschreibt die Standard-Logik und verwendet diese URL

Beispiel: https://www.meinshop.de/spezielle-landingpage

Priorität: Custom URL hat höchste Priorität und überschreibt die Active/Inactive Einstellung!


Schritt 3: Debug-Logging (optional)

Einstellungen → System → Plugins → WSCPluginSWCanonicalURLVariant → Konfiguration

  • Debug-Logging aktivieren: ☐ Aus (Production) / ✓ An (Development)
  • Logs werden geschrieben nach: var/log/wsc_canonical_debug.log

Ansehen der Logs:

tail -f var/log/wsc_canonical_debug.log

Tipp: In Production ausschalten für bessere Performance!


📋 Voraussetzungen

  • Shopware: 6.5.x, 6.6.x oder 6.7.x
  • PHP: 8.1 oder höher
  • Composer: 2.x (für Installation via Composer)

🛠️ Entwicklung

Tests ausführen

composer install
vendor/bin/phpunit

Code-Qualität prüfen

vendor/bin/phpcs --standard=PSR12 src/
vendor/bin/phpstan analyse src/ --level=8

🐛 Troubleshooting

Canonical-Tag wird nicht gesetzt

  1. Prüfe die Einstellung am Hauptprodukt (nicht Variante!)
  2. Standard-Sprache auf "Aktiv" gesetzt? (nicht "erben"!)
  3. Aktiviere Debug-Logging in der Plugin-Konfiguration
  4. Cache leeren: bin/console cache:clear
  5. Logs prüfen: tail -f var/log/wsc_canonical_debug.log

Canonical in Österreich aktiv obwohl deaktiviert

  • Stelle sicher dass du "Inaktiv" gewählt hast (nicht "erben")
  • Wenn "erben" aktiv ist, wird die Einstellung aus der Standard-Sprache übernommen

Debug-Logs werden nicht geschrieben

  • Prüfe ob Debug-Logging in der Plugin-Konfiguration aktiviert ist
  • Cache leeren: bin/console cache:clear
  • Prüfe Schreibrechte: ls -la var/log/

📄 Lizenz

Dieses Plugin ist Open Source und steht unter der GPL-3.0-or-later Lizenz.


💝 Unterstützung

Made with ❤️ by WSC - Web SEO Consulting

Dieses Plugin ist kostenlos und Open Source. Wenn es dir geholfen hat, freue ich mich über deine Unterstützung:

Buy Me a Coffee GitHub Sponsors PayPal


🔗 Links


© 2025 Christian Säum | WSC - Web SEO Consulting