Smarty - String zerlegen und in Tabelle anzeigen...

Ich habe einen String (kommt aus der Wawi und wird per sync zu Shopware in Attribut4 übertragen): z.B. [quote] Drehmoment TAB 6Nm Endabschaltung TAB elektronisch Funk TAB mit Funk [/quote] TAB ist ein Tabsprung (könnte aber auch ein anderes Zeichen sein, wenn das einfacher wird) diesen String möchte zerlegen und wie die Eigenschaften anzeigen. Also jeweils 1 Zeile als 1 Tabellenzeile Den Text vorm Tab als Den Text hinterm Tab als quasi genauso wie das bei den Eigenschaften gemacht wird: [quote]
{foreach from=$sArticle.sProperties item=sProperty} {* nur anzeigen wenn wert ausgefüllt *} {if $sProperty.value} - {$sProperty.name} {$sProperty.value}
{/if} {/foreach} [/quote] Geht das…? Wie bekomm ich den String in Zeilen zerlegt und wie in den linken/rechten Teil vom Tab? Ich komme da irgendwie nicht weiter :frowning:

Hallo, in Smarty kann man eine Variable mit dem lanuage modifier regex_replace modifzieren (smarty.net und http://php.net/manual/en/function.preg-replace.php für die Syntax der Regular Expressions). Damit wäre die Begrenzung durch den Tab realisierbar. Man müsste dann an der entsprechenden Stelle im Template immer alles links oder recht des Tabs aus der Variable ausblenden. Wenn es mehr als zwei Werte sind und nicht immer die identische Anzahl von Werten, wird das mit den RegExpressions kniffelig. Der Weg über PHP-Funktionen als modifier geht auch (siehe smarty.net). Damit kann man jeden String in einzelne Teile zerlegen oder in ein Array überführen. Hiermit wäre dann eine beliebig lange Liste (=String) splittbar. Die Ausgabe in Tabellenform ist dann in HTML umzusetzen. Entweder als “echte” Tabelle, über display: table-cell, inline-block oder per float. Das hat halt alles Vor- und Nachteile. Bei der Aufzählung von Produkteigenschaften böte sich auch noch eine definition list an. Das wäre semantisch der ideale Weg.

hi, ich würde es auch, wie hth schon schrieb, über eine php-funktion als modifier machen. in etwa so (ungetestet): {assign var=foo value="\n"|explode:$sArticle.attr4} damit hättest du schon mal die Zeilen in einem Array. Diese kannst du dann noch mal nach deinem Trennzeichen splitten. und dann beliebig ausgeben…