Gelöst String per Smarty zerlegen

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
198
8
Hi,

ich habe in eigene Felder eine Amazon-Kategorie zu stehen.
Z.B. "Schuhe & Handtaschen | 361139011"

Nun würde ich das gern für Amazon fest verknüpfen (also die Klassifikationsnummer[Kategorie-ID])
Leider schlägt das fehl, weil Amazon (logischerweise) nur die ID haben möchste.

Also hab ich mit Smarty was bewegen wollen.ala

{{{assign var="myArray" value="|"|explode: {{ Vorgang.EigeneFelder.Amazon.Amazon_Kategorie }} }}

Wenn ich mir das Ergebniss im Browser anschaun möchte. dann erscheint:
"Liquid error: Der Wert darf nicht NULL sein. Parametername: input"

Dann hängt sich die WAWI auf und ich muß von vorn beginnen.
Das erschwert natürlich alles erheblich.

Kann einer Helfen was zu tun ist ?
 
Zuletzt bearbeitet:

fibergirl

Sehr aktives Mitglied
14. April 2016
832
263
Ich seh da nur auf die Schnelle (vom Handy, Tapatalk), dass Du 5 Klammern auf, aber nur 4 Klammern zu machst.
Vielleicht hat es damit etwas zu tun?


Gesendet von meinem I9195I mit Tapatalk
 

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
198
8
Sorry... nochmal von vorn. Ist kein Smarty. Da wo ich bin ist es DotLiquid

Ich bin auch schon recht nah... der Lösung.


Code:
{% assign words = Vorgang.EigeneFelder.Amazon.Amazon_Kategorie | Split: ' =>'  %}
{{ words.first }}

{{Vorgang.EigeneFelder.Amazon.Amazon_Kategorie | Split: ' =>'| }}

Die Vorschau/Auswertung bringt:
Code:
1760307031

1760307031 Schuhe & Handtaschen/Schuhe/Damen/Pumps
Die erste Zeile ist also schon mal korrekt. Nur erzeugt die assign words-Zeile bei der ausgabe eine Leerzeile.
Sprich: ich hab eine Leerzeile und in der 2ten Zeile erst die Amazon-Kategorie. Das wiederrum versteht die WAWI-Vorlage aber nicht.

Ich müsste also in der ersten Zeile schon den passenden Wert ausgeben. Aktuell greift da aber garnichts als Ausgabe
Z.B.
Code:
{% assign words = Vorgang.EigeneFelder.Amazon.Amazon_Kategorie | Split: ' =>'  | words.first % }

Hab ich da noch was vergessen ?
 

lord_icon

Gut bekanntes Mitglied
21. Juli 2007
198
8
ich hab's rausgefunden
Code:
{% assign words = Vorgang.EigeneFelder.Amazon.Amazon_Kategorie | Split: ' =>'  % } {{words.first}}

Wichtig hier war für meine Konstallation, dass {{ words.first }} hinter bzw. in der ersten Zeile steht. PAckt man den Befehl in die 2te Zeile (wegen Lesefreundlichkeit) dann ergibt das im Output auch eine 2te Zeile.
 

gutberle

Sehr aktives Mitglied
29. März 2011
1.295
407
@lord_icon - Ja, diese implizite Formatierung in DotLiquid ist schon echt blöd. Wenn man z.B. zur besseren Lesbarkeit des Codes mit Einrückungen arbeitet, sagen wir mal bei Schleifen, wo das ja echt Sinn macht, dann erzeugen alle Befehle, die einen Wert ausgeben, vorne dran genauso viele Leerzeichen, wie man in der Einrückung hat. - Klingt für mich, als ob da jemand beim Coden gepennt hätte ... :eek:
 

Christian ausm Westerwald

Gut bekanntes Mitglied
7. Januar 2017
187
18
Hallo,

kann da über den Code nochmal jemand drüber schauen?
Bei mir zeigt er immer beide wörter an.

Der Code Lautet wie oben angegeben:

{% assign words = Vorgang.EigeneFelder.Amazon_Sonstiges.Amazon_Kategorie | Split: '=>' %} {{words.first}}

Bekomme es einfach nicht hin das er mir nur die ID anzeigt, also das erste Wort was ich in den Eigenen Felder hinterlegt habe.
:(

LG Christian
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.449
2.573
Berlin
Firma
css-umsetzung
gibt keinen Grund warum das nicht gehen sollte wenn Vorgang.EigeneFelder.Amazon_Sonstiges.Amazon_Kategorie so aussieht wie erwartet.
 

Christian ausm Westerwald

Gut bekanntes Mitglied
7. Januar 2017
187
18
Anbei zwei bilder.

Der Text der aufgespalten werden soll ist durch ein leerzeichen getrennt.
Ausgegeben werden soll ja nur die Zahl 123456.

Screenshot 38 ist die vorschau...
 

Anhänge

  • Screenshot (37).png
    Screenshot (37).png
    33 KB · Aufrufe: 18
  • Screenshot (38).png
    Screenshot (38).png
    25,6 KB · Aufrufe: 18
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.449
2.573
Berlin
Firma
css-umsetzung
Kollega :)

dann musst du doch anstelle von => ein Leerzeichen eintragen :)

{% assign words = Vorgang.EigeneFelder.Amazon.Amazon_Kategorie | Split: ' ' % } {{ words.first }}
 

Christian ausm Westerwald

Gut bekanntes Mitglied
7. Januar 2017
187
18
AHA..... :D

@Xantiva
weil ich kein Plan davon habe und mir alles durch lesen selbst beigebracht habe :).
In diesem Fall habe ich nicht richtig gelesen, oder einfach drauf verlassen was unter #3 steht :) da ist nämlich auch kein = Zeichen zu sehen.

VIELEN DANK an euch euch beide.
Die Lösung war so einfach.

PS: An dem Problem hing ich schon vor Monaten und ich glaube es würden sich alle hier schlapp lachen wenn se wüssten wie ich dieses Problem (echt umständlich) gelöst hatte :)

Euch noch ein schönes Wochenende und danke für die schnelle hilfe!
 

Ähnliche Themen