Was ist eine gute, einfache Möglichkeit, alternierende Zeilenfarben mit freemarker zu haben?Alternierende Tabellenreihe Farben in Freimarker
Ist das wirklich der beste Weg?
<#assign row=0>
<#list items as item>
<#if (row % 2) == 0>
<#assign bgcolor="green">
<#else>
<#assign bgcolor="red">
</#if>
<tr style='background-color: ${bgcolor}'><td>${item}</td></tr>
<#assign row = row + 1>
</#list>
Ich habe versucht, dies zu tun:
<#assign row=0>
<#list items as item>
<tr style='background-color: ${(row % 2) == 0 ? "green" : "blue"}'><td>${item}</td></tr>
<#assign row = row + 1>
</#list>
Aber anscheinend kann man den ternären Operator Benutzer nicht drin.
Hinweis: Ich denke, ich hätte es früher erwähnen sollen, aber ich kann keine CSS-Klassen oder Javascript verwenden, da dieser HTML-Code in eine E-Mail-Nachricht eingeht.
Der _index ist ein netter Trick. Vielen Dank! – itsadok
Und bitte verwenden Sie "clean" CSS: Fügen Sie die relevante Klasse bei Bedarf (class = "odd" oder class = "even") & dann in der CSS entsprechend (dh .even {Hintergrundfarbe: grau;} .odd {background-color: white;} –
Wenn in 2.3.23 die Klassennamen 'even' und 'odd' sind, können Sie '
Hmmm ... OK, das ist das Beste, was ich habe kommen mit:
Von der ohrenbetäubenden Stille Ich leite es gibt keine schönere Art und Weise, dies zu tun.
Quelle
2009-02-04 11:30:18 itsadok
Sie erkennen, dass Sie CSS oder JavaScript verwenden könnte, das Gleiche zu tun: Es gibt keine Notwendigkeit Freemarker zu benutzen? –
Mit Freemarker gibt es begrenzte Möglichkeiten, diese Frage zu beantworten, aber wenn Sie CSS wollen, sind allein zu verwenden (was immer noch Trennung von Bedenken erlaubt), dann ist hier ein Weg:
gebe folgende in Ihrer Sheet:
dann die folgenden
tr
Klasse verwenden abwechselnde Zeilen zu definieren:Es gibt auch many resources zur Auswahl.
Bearbeiten: Wenn Ihr HTML in eine E-Mail geht, können Sie nicht sicher sein, dass der E-Mail-Client des Clients das HTML, das Sie einfügen möchten, erlaubt. Ihre beste Wette ist zu diesem Zeitpunkt, FreeMarker ähnlich wie Sie es verwenden, außer dass Sie das
style
Tag entfernen müssen, und Farben für jede Zeile verwenden, diebgcolor="color"
in Ihren<tr>
Tags verwenden.Quelle
2009-02-04 11:43:44
Jetzt brauche ich eine Möglichkeit, "linea" und "lineb" zu wechseln - ein sehr ähnliches Problem ... – itsadok
+1 für den E-Mail-Tipp – itsadok
Eine Lösung kocht dann auf diese nach unten:
in Ihrer Vorlage:
jedoch, wie in einer vorherigen Antwort erwähnt, können Sie dies mit CSS, ohne diese Freemarker Lösung (siehe http://www.w3.org/Style/Examples/007/evenodd):
Und dann benutzen Sie einfach eine normale Tabelle ohne classe s in den Zeilen:
oder mit einem Freemarker generierten Tabelle:
So ist es in der CSS.
Quelle
2010-02-16 19:54:31 prule
Mit Freemarker, können Sie mit dem
string
eingebaut:Quelle
2010-02-16 20:24:11
Willkommen Vielen Dank für das Hinzufügen dieses tollen Tipp! –
Quelle
2010-05-19 18:30:43
Liebe dieses, viel einfacher als die angenommene Antwort. –
Zustimmen, nice one. –
Hinweis: Ersetzen Sie "Element" oben mit der Variablen für die Liste.Zum Beispiel, <#list Array als Linie> ... [Linie_Index% 2] ...#list> – Nathan
Sie können ternären Operator in Freemarker simulieren mit dem folgenden Aufbau: $ {? Zustand string (result_for_true, result_for_false)} .
Quelle
2013-09-24 08:43:37
In Freemarker 2.3.23:
Quelle
2015-07-05 17:29:42 ddekany
Verwandte Themen