TWIG Filter (upper/lower) erzeugen bei Shopware URLs unerwartete Ergebnisse

Hallo zusammen,
ich bin auf ein Problem gestoßen, das mich fast wahnsinnig macht.

Im TWIG-Template:
{% set can = page.metaInformation.canonical %}
{{ can }}
ergibt als Ausgabe im Front-End z.B. ‚https://meine-Domain/meine-Seite‘ aus.

Soweit, so gut.

Wenn ich aber schreibe:
{{ can|upper }}
führt das zur Ausgabe von: ‚124C71D524604CCBAD6042EDCE3AC799/NAVIGATION/609558B6CD8C45AD9424E2DE5EAA290C#‘

Wenn ich schreibe:
{{ can|lower }}
wird die unveränderte URL, also ohne lowercase, ausgegeben:
https://meine-Domain/meine-Seite

Wie kann denn so etwas überhaupt sein? Wenn ich die Filter auf „echte“ Strings anwende, funktioniert alles wie es soll:

{% set can = „Test“ %}
{{ can|upper }}
=> ‚TEST‘
{{ can|lower }}
=> ‚test‘

Bin hier wirklich ratlos und wäre über jeden Tip dankbar.

Volker

Du änderst durch dein upper eine gültige uuid zu einer ungültigen. Bsp.: 12345aaa ist nicht das gleiche wie 12345AAA !!
Darum erscheint bei lower eine seo url und bei upper kaputt.

1 „Gefällt mir“

Hallo Almare und vielen Dank für deine Antwort :slight_smile:

Das erklärt mir einiges, wirft aber gleich die nächste Frage auf:

Wieso sehe ich keine UUID sondern einen string im Klartext, wenn ich page.metaInformation.canonical aufrufe? Ein dump(page.metaInformation) zeigt mir ja auch an canonical = string (77) „https://…“ und nie die UUID.
Wahrscheinlich bin ich hier einfach noch nicht erfahren genug, aber warum sehe ich im Front-End eine URL im Klartext, hinter den Kulissen scheint es aber immer eine UUID zu sein. Denn auch PHP Funktionen schlagen fehl, wenn ich den Wert an einen Service übergebe…

Bzw. anders gefragt: Wie kann ich per TWIG den Pfad der aktuellen Seite erhalten, den ich auch ganz normal über String Filter/Funktionen manipulieren kann?

Wäre schön, wenn du hier etwas Grundwissen vermitteln könntest :slight_smile:

Lieben Dank
Volker

Wieso passt du nicht die SEO Url Templates in der Shopware Konfiguration an?

Das habe ich so schon getan. Leider hat das keine Auswirkungen auf die Kategorieseiten (listing.html.twig)…

{% for part in product.categories.sortByPosition().first.breadcrumb|slice(1) %}{{ part }}/{% endfor %}{{ product.productNumber }}/{% if product.customFields.custom_product_brand is defined %}{{ product.translated.customFields.custom_product_brand|replace({’ ': ‚-‘}) }}{% endif %}-{{ product.translated.name}}