Firefox ist ein kostenloser OpenSource Browser den es für viele Plattformen (Windows, Linux, ...
Balkon & Terrassen Wettbewerb
Nimm jetzt an unserem Balkon Wettbewerb teil: Egal welche Anleitung, oder Idee du rund um den Balkon oder Terrasse hast, wir wollen sie sehen! ... mehr erfahren
| Teilahme bis: 23.07.2012 | Aktuelle Teilnehmerzahl: 2 |
|
Perfektes Raumklima - Luft-Entfeuchter Special! Brauchbare Tipps, leichte Anleitungen sowie viele Anregungen finden Sie im Luft-Entfeuchter Special Weitere Infos... |
Anleitung an einen Freund senden
- Senden an *
- Name *
- Von *
- Betreff
- * Pflichtfelder
Smarty-Plugin: Modifier für einfache Fallunterscheidung
Intro
Die Übergabe von Werten an includes in Smarty ist manchmal eher unflexibel: Wenn zum Beispiel von Bedingungen abhängt, welcher Wert übergeben werden soll, muss man dies außerhalb des includes erledigen.
Ein Beispiel: An ein per include eingebundenes Template soll der Text "1 neue Nachricht" - bzw. "2 neue Nachrichten" - übergeben werden. Die Anzahl der Nachrichten ist in einer Variable $qty_messages enthalten. Von der Anzahl hängt ab, ob der Singular "Nachricht" oder der Plural "Nachrichten" verwendet werden soll.
Dies läßt sich - eher umständlich - so lösen:
{if $qty_messages==1}
{assign value=1 neue Nachricht" var="text"}
{else}
{assign value="`$qty_messages` neue Nachrichten" var="text"}
{/if}
{include file="status_bar.tpl" text=$text}
Einfacher geht es mit einem Plugin, welches ich in den nächsten Schritten vorstelle.
Melden Sie sich kostenlos an, um diese Werbung dauerhaft auszublenden.
Schritt 1: Ziel: Kompaktere Schreibweise
Das Ziel ist es, den im ersten Schritt vorgestellten Code klar zu verkürzen. Statt
{if $qty_messages==1}
{assign value=1 neue Nachricht" var="text"}
{else}
{assign value="`$qty_messages` neue Nachrichten" var="text"}
{/if}
{include file="status_bar.tpl" text=$text}
wollen wir folgendes verwenden können:
{include file="status_bar.tpl" text="`$qty_messages`==1"|if_else:"1 neue Nachricht":"`$qty_messages` neue Nachrichten"}
Wie das geht, erkläre ich im nächsten Schritt.
Schritt 2: Lösung: Modifier auf die Bedingung anwenden
Schauen wir uns an, was genau im folgenden Code-Abschnitt passiert:
"`$qty_messages`==1"|if_else:"1 neue Nachricht":"`$qty_messages` neue Nachrichten"
Im String "`$qty_messages`==1" wird durch den Backtick Operator der Inhalt der Variable $qty_messages eingefügt. Der String enthält damit die Bedingung.
Auf diesen String wird der Modifer if_else angewandt. Diesem werden als Parameter die beiden Textalternativen übergeben.
if_else ist ein selbstgeschriebener Modifier. Den Quellcode dafür stelle ich im nächsten Schritt vor.
Kosten: gering
hoch
Schwierigkeit: gering
hoch

| Bei neuen Kommentaren benachrichtigen |
von , am 25.11.2008 um 16:38 Uhr
Könnte man dies alternativ auch über die Variable Jsn STRNG lösen?