Neu DotLiquid Replace nicht funktionsfähig bei bestimmten Zeichen

apalusa

Sehr aktives Mitglied
22. Oktober 2018
276
77
Hallo Liebe Community und JTL Mitarbeiter,

uns ist heute ein Problem aufgefallen das meiner Meinung nach vermutlich ein Bug ist. Falls dem doch nicht so ist, würde mich die Begründung hinter dieser Eigenheit auch interessieren.
Es geht dabei um die Replace Funktion in DotLiquid. Nehmen wir mal folgendes Beispiel an:
Wir richten einen Workflow ein der bei der Neuerstellung eines Artikels automatisch den Meta Title setzt. Nun haben wir einen Artikel mit dem Namen "Fuß.ball (2 farbig)". Der Workflow ist so einrichtet, dass er den Artikelnamen etwas anpasst und diesen dann so als Meta Title übernimmt. Dafür nehmen wir folgenden Beispiel Code nachdem wir den Workflow so eingerichtet haben, den entsprechenden Wert zu setzen:
Code:
{{ Vorgang.Beschreibung.Global.Artikelname.Deutsch | Replace: '.', '' | Replace: '(', '' | Replace: ')', '' }}
Das Ergebnis davon, zumindest in all meinen Tests bisher unter WaWi 1.3.21.0, ist ein leeres Meta Title Feld.

Nach genauerer Prüfung konnte ich auch nachvollziehen, wieso das Feld komplett leer ist. Wenn man z.B. nur einen dieser 3 Replace verwendet und das jeweilige Zeichen in z.B. einen Bindestrich umwandelt, dann hat man plötzlich einen Meta Title mit so vielen Bindestrichen wie Buchstaben/Zeichen im Artikelnamen. Anscheinend werden also der Punkt und die beiden Klammern nicht als eigenes Zeichen erkannt sondern als eine Art Wildcard interpretiert. Ob es noch andere Zeichen mit dem selben Effekt gibt weiß ich nicht, wobei ich " - " und " / " ausschließen kann da diese beiden einwandfrei funktionieren.
Da ich mir nicht vorstellen kann das dieses Verhalten so gewollt ist, und es für uns sehr hilfreich wäre wenn wir Punkte und Klammern ersetzen könnten, hoffe ich das entweder jemand Licht ins dunkeln bringen kann oder der Fehler irgendwie behoben werden kann.

Viele Grüße
- apalusa
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
463
Emsland
Firma
Notun Delend
Versuch es mal mit "escapen" der Zeichen mit "\"
PHP:
{{ 'Fuß.ball (2 farbig)'  | Replace: '\.', '' | Replace: '\(', '' | Replace: '\)', ''   }}
 

apalusa

Sehr aktives Mitglied
22. Oktober 2018
276
77
Versuch es mal mit "escapen" der Zeichen mit "\"
PHP:
{{ 'Fuß.ball (2 farbig)' | Replace: '\.', '' | Replace: '\(', '' | Replace: '\)', '' }}

Danke, das scheint soweit zu funktionieren. Allerdings frage ich mich, wieso das bei diesen Zeichen spezifisch notwendig ist und bei einigen anderen nicht? Immerhin zeigen die quotes ja eigentlich einen String an der dann meines Wissens auch nicht anders interpretiert werden sollte. Allerdings scheint dass dann eher ein Problem mit DotLiquid zu sein und nicht JTL WaWi.
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
463
Emsland
Firma
Notun Delend
Ich vermute mal, dass es in irgendeiner Forum mit der regex-Syntax zu tun hat, wo solche Zeichen ja auch escaped werden.
 

Raphael1985

Aktives Mitglied
29. August 2011
58
7
Ich stehe von dem Problem ein ' (einfaches Anführungszeichen) zu ersetzen es geht einfach nicht hat einer von euch eine Idee?
 

_simone_

Sehr aktives Mitglied
17. Februar 2013
3.245
463
Emsland
Firma
Notun Delend
Ne du, ich hab einiges probiert, bekomme das "single Quote" aber nicht in den Griff, sorry.
 

Thomas_S

Sehr aktives Mitglied
2. Oktober 2012
732
123
50226 Frechern
Probier es mal mit einer Kombination der Anführungszeichen, dass sollte klappen 😉
{{ "Fuß'ball" | Replace: "'", "" }}
oder halt so
{% assign string = "Fuß'ball" -%} {{ string | Replace: "'", "" }}
 

Raphael1985

Aktives Mitglied
29. August 2011
58
7
Danke für die Antwort! ich hätte schwören können ich hatte es schon getestet. Aber die Version mit | Replace: "'", "" geht!
 

Ähnliche Themen