PrestaShop-URL-Muster und Routing für Entwickler

Erstellen und testen Sie PrestaShop-URL-Muster, Routenabgleich, Kollisionsbehandlung, Weiterleitungen und Queryparameter.

mypresta.rocks · Aktualisiert 01.11.2026

Nutzen Sie URL-Muster für konsistente Adressen über Shops und Sprachen hinweg. Verbinden Sie Generierung, eingehendes Routing und Weiterleitungsbehandlung, bevor Sie ein neues Muster veröffentlichen.

Mit nativem PrestaShop-Routing beginnen

PrestaShop hat bereits konfigurierbare Routenregeln, Keywordplatzhalter und Modulrouten. Entitätsslugs sind nur ein Teil dieses Systems. Prüfen Sie native Route und aktives URL-Modul, bevor Sie eine weitere URL-verantwortliche Komponente hinzufügen.

Das gemeinsame Paket myprestarocks/prestashop-url ergänzt Musterspeicherung, entitätsbewusste Generierung, kanonische Zuordnung und URL-Verlauf. Eine Bibliotheksinstallation verbindet sie nicht mit Storefront-Anfragen. Ihr Modul muss ihre Tabellen installieren, Hooks registrieren und die relevanten Aktionen weiterleiten.

Wenn Sie ein vorhandenes Modul konfigurieren, nutzen Sie die Hilfe zu Friendly URL Manager oder Hilfe zu SEO Revolution.

Platzhalter und Speicherung wählen

Nutzen Sie URLPatternManager mit einer Implementierung von PatternStorageInterface. SQLPatternStorage speichert Mustereinstellungen in Tabellen mit Modulpräfix. ConfigPatternStorage speichert JSON über die gemeinsame MPR-ConfigTable in mpr_config, begrenzt auf Modul und Shop. Beide erhalten ein Array mit Standardwerten.

Produktplatzhalter umfassen {id}, {rewrite}, {name}, {reference}, {manufacturer}, {category}, {categories} und Variantenfelder wie {id_product_attribute}. Unterstützte Platzhalter unterscheiden sich je Entität. Der Produktplatzhalter {name} ist ein Alias für den Rewrite, keine Anweisung zum Einfügen des unveränderten Anzeigenamens.

  • {category}/{rewrite} nutzt Standardkategorie und Produkt-Rewrite.
  • {manufacturer}/{rewrite}-{id} enthält eine stabile Produktkennung.
  • {category}/{reference} setzt eine ausgefüllte, nach Normalisierung unterscheidbare Referenz voraus.

Generierte Segmente werden normalisiert. Nehmen Sie nicht an, eine Referenz wie WH-1000XM5 behalte ihre ursprüngliche Groß-/Kleinschreibung. Hierarchieplatzhalter können mehrere Pfadsegmente einführen. Testen Sie fehlende Referenzen, Namen mit Akzenten, doppelte Übersetzungen und Varianten vor Aktivierung eines Musters.

Die Generierungs-API nutzen

Dieses Beispiel läuft innerhalb eines initialisierten PrestaShop-Moduls. Das Modul hat seine URL-Tabellen bereits installiert und ein gültiges Produktmuster aktiviert. Verwenden Sie durchgängig ein modulspezifisches Tabellenpräfix.

use MyPrestaRocks\URL\URLPatternManager;
use MyPrestaRocks\URL\URLRouter;
use MyPrestaRocks\URL\Storage\SQLPatternStorage;

$storage = new SQLPatternStorage('catalogurls_');
$manager = new URLPatternManager($storage, 'catalogurls_', $idShop, $idLang);
$router = new URLRouter($manager, 'catalogurls_', $moduleName, $idShop, $idLang);

$path = $manager->generateURL('product', $idProduct, $idLang, $idCombination);
$route = $router->resolve($requestUrl);

Generierung und Routing sind getrennte Vorgänge. Behandeln Sie einen generierten Pfad als Pfad und wenden Sie über die Linkinfrastruktur des Shops Domain, Basisverzeichnis und Sprachkontext an. Maskieren Sie die endgültige URL beim Rendern eines Links für ihr HTML-Attribut.

Übergeben Sie bei Jobs und Multistore-Vorgängen ausdrückliche Shop- und Sprach-IDs. Nutzen Sie generateURLForShop() zur Generierung für einen anderen Shop. Übernehmen Sie die Shopidentität nicht aus einer unpassenden aktuellen Anfrage.

Abgleich und Kollisionen validieren

Rufen Sie getValidator()->validate($entityType, $pattern, $options, $idShop, $idLang) auf, bevor Sie ein Muster als einsatzbereit darstellen. Prüfen Sie ok, blocking_collisions, Gruppen doppelter Pfade, entitätsübergreifende Konflikte und Warnungen. Unbekannte Platzhalter und ungültiger Kontext blockieren die Validierung.

Das Speichern aktivierter Muster und Aktivierungsvorgänge durchlaufen eine Validierungsschranke. Prüfen Sie ihre Rückgabewerte und getLastPatternValidation(); melden Sie nach einem fehlgeschlagenen Speichern keinen Erfolg.

Zwei Produkte können zum selben Pfad normalisiert werden. Ein Produkt kann auch mit einer Kategorie oder CMS-Seite kollidieren. Der kanonische Zuordnungsindex und die Kollisionsrichtlinie bestimmen die öffentliche Adresse. Ein ID-Suffix kann einige Kollisionen lösen, dennoch müssen Sie resultierende Pfade und reservierte Routen testen.

Eingehendes Routing berücksichtigt ausdrückliche Entitätsauswahl und aktuelle kanonische Zuordnung. Der Verlauf dient als Ausweichlösung, wenn keine aktuelle Route den Pfad besitzt. Eine alte Weiterleitung darf keine neu veröffentlichte aktuelle Seite übernehmen. Testen Sie den vollständig gerenderten Pfad, nicht nur den Treffer des regulären Musterausdrucks.

Tabellen installieren und Lebenszyklus-Hooks weiterleiten

Schema\URLSchemaInstaller bietet Installation und Migration für URL-Cache-, kanonische Zuordnungs-, Verlaufs-, Override- und Mustertabellen. Nutzen Sie dasselbe Tabellenpräfix in Installer, Manager, Router und Speicher.

Ihr Modul muss jeden von IntegrationContract::getRequiredHooks() gelieferten Hook registrieren und weiterreichen. Führen Sie IntegrationContract::audit($module) aus, um fehlende Methoden und Registrierungen zu finden. Leiten Sie Dispatcher- und Entitätslebenszyklusereignisse an die Pakethandler weiter.

Der Lebenszyklushandler erfasst alte Pfade vor Updates und aktualisiert danach den URL-Zustand. Produktänderungen, Änderungen der Kategoriehierarchie und Löschungen benötigen ihre entsprechenden Hooks. Direkte SQL-Importe brauchen ausdrückliche Integration, da sie Objekthooks umgehen können.

Führen Sie nach einer Migration, die den kanonischen Zuordnungsindex erstellt, rebuildCanonicalOwnerIndexForShop($idShop) einmal je Shop aus. Musterspeicherung und Aktivierungsänderungen bauen ihn über ihre normale API neu auf. Erledigen Sie Wartungsarbeit im Upgrade- oder Jobpfad, statt einen Katalog bei einer Besucheranfrage neu aufzubauen.

Parameter erhalten und den gesamten Ablauf testen

Ein URL-Pfad beschreibt nicht jeden Listenzustand. Suchbegriffe, Filter, Seitennavigation, Sortierung und Seitengröße benötigen bewusste Behandlung. Listing\ListingQueryParameters liefert Freigabelisten und Parsinghilfen. Wählen Sie nur vom Ziel unterstützte Parametergruppen.

Die Suchidentität kann s, das ältere search_query oder tag nutzen. Behandeln Sie q nicht als universell mit einem Suchbegriff austauschbar; es kann Facetten transportieren. Normalisieren Sie Aliase und kodieren Sie Werte einmal. Weisen Sie mehrdeutige Dubletten zurück, statt stillschweigend eine andere Ergebnismenge zu wählen.

  1. Generieren und öffnen Sie ein Produkt, eine Kategorie, eine CMS-Seite und jede unterstützte Variante in jeder Sprache und jedem Shop.
  2. Benennen Sie eine Entität um und verschieben Sie eine Kategorie. Prüfen Sie neue Seite und Weiterleitung der alten Adresse.
  3. Erstellen Sie doppelte Slugs über Entitätstypen hinweg. Prüfen Sie Zuordnung und Kollisionssuffixe.
  4. Rufen Sie native Query-URLs, lesbare Pfade und fehlerhafte Entitätsparameter ab.
  5. Prüfen Sie Such-, Seiten-, Filter- und Sortierlinks. Bestätigen Sie, dass Canonical oder Weiterleitung keinen bedeutsamen Zustand verwirft.
  6. Prüfen Sie Antwortstatus, Zielentität und kanonische URL. Prüfen Sie auf Schleifen und Weiterleitungen zur falschen Sprache.
Lade ...
Nach oben