mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-01 21:01:37 +01:00
5284 lines
203 KiB
Plaintext
5284 lines
203 KiB
Plaintext
<!-- Smarty German Documentation Port -->
|
||
<!-- $Id$ -->
|
||
<!-- $Author$ -->
|
||
<!-- $Version$ -->
|
||
<part id="smarty.for.designers">
|
||
<title>Smarty für Template Designer</title>
|
||
|
||
<chapter id="language.basic.syntax">
|
||
<title>Grundlegende Syntax</title>
|
||
<para>
|
||
Alle Smarty Template-Tags werden mit Trennzeichen umschlossen. Normalerweise
|
||
sind dies: <literal>{</literal> und <literal>}</literal>, sie können aber
|
||
auch verändert werden.
|
||
</para>
|
||
<para>
|
||
Für die folgenden Beispiele wird davon ausgegangen, dass Sie die
|
||
Standard-Trennzeichen verwenden. Smarty erachtet alle Inhalte ausserhalb
|
||
der Trennzeichen als statisch und unveränderbar. Sobald Smarty
|
||
auf Template-Tags stösst, versucht es diese zu interpretieren und die
|
||
entsprechenden Ausgaben an deren Stelle einzufügen.
|
||
</para>
|
||
|
||
<sect1 id="language.syntax.comments">
|
||
<title>Kommentare</title>
|
||
<para>
|
||
Kommentare werden von Asterisks umschlossen, und mit Trennzeichen umgeben.
|
||
Beispiel: {* das ist ein Kommentar *}
|
||
Smarty-Kommentare werden in der Ausgabe nicht dargestellt und vor allem
|
||
dazu verwendet, die Templates verständlicher aufzubauen.
|
||
</para>
|
||
<example>
|
||
<title>Kommentare</title>
|
||
<programlisting>
|
||
{* Smarty *}
|
||
|
||
{* einbinden des Header-Templates *}
|
||
{include file="header.tpl"}
|
||
|
||
{include file=$includeFile}
|
||
|
||
{include file=#includeFile#}
|
||
|
||
{* Ausgabe der drop-down Liste *}
|
||
<SELECT name=firma>
|
||
{html_options values=$vals selected=$selected output=$output}
|
||
</SELECT></programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
<sect1 id="language.syntax.functions">
|
||
<title>Funktionen</title>
|
||
<para>
|
||
Jedes Smarty-Tag gibt entweder eine <link linkend="language.variables">Variable</link> aus
|
||
oder ruft eine Funktion auf. Funktionen werden aufgerufen indem der Funktionsname
|
||
und die Parameter mit Trennzeichen umschlossen werden. Beispiel: {funcname attr1="val" attr2="val"}.
|
||
</para>
|
||
<example>
|
||
<title>Funktions-Syntax</title>
|
||
<programlisting>
|
||
{config_load file="colors.conf"}
|
||
|
||
{include file="header.tpl"}
|
||
|
||
{if $name eq "Fred"}
|
||
Du bist Fred und darfst das hier sehen!
|
||
{else}
|
||
Willkommen, <font color="{#fontColor#}">{$name}!</font>
|
||
{/if}
|
||
|
||
{include file="footer.tpl"}</programlisting>
|
||
</example>
|
||
<para>
|
||
Sowohl der Aufruf von eingebauten, als auch der von eigenen Funktionen folgt der
|
||
gleichen Syntax. Eingebaute Funktionen erlauben einige Basis-Operationen wie <command>if</command>, <command>section</command>
|
||
und <command>strip</command>. Diese Funktionen können nicht verändert werden.
|
||
Individuelle Funktionen die die Fähigkeiten von Smarty erweitern werden als Plugins implementiert.
|
||
Diese Funktionen können von Ihnen angepasst werden, oder Sie können selbst neue Plugins
|
||
hinzufügen. <command>html_options</command> und <command>html_select_date</command> sind Beispiele solcher Funktionen.
|
||
</para>
|
||
</sect1>
|
||
|
||
<sect1 id="language.syntax.attributes">
|
||
<title>Attribute / Parameter</title>
|
||
<para>
|
||
Die meisten Funktionen nehmen Parameter entgegen, die das
|
||
Verhalten der Funktion definieren beziehungsweise beeinflussen. Parameter
|
||
für Smarty Funktionen sind HTML Attributen sehr ähnlich.
|
||
Statische Werte müssen nicht in Anführungszeichen gesetzt werden,
|
||
für literale Zeichenketten (literal strings) wird dies jedoch empfohlen.
|
||
</para>
|
||
<para>
|
||
Bestimmte Parameter verlangen logische Werte (true / false). Diese
|
||
können auch ohne Anführungszeichen angegeben werden:
|
||
<literal>true</literal>, <literal>on</literal> und <literal>yes</literal>
|
||
- oder <literal>false</literal>, <literal>off</literal> und <literal>no</literal>.
|
||
</para>
|
||
<example>
|
||
<title>Funktions-Parameter Syntax</title>
|
||
<programlisting>
|
||
{include file="header.tpl"}
|
||
|
||
{include file=$includeFile}
|
||
|
||
{include file=#includeFile#}
|
||
|
||
{html_select_date display_days=yes}
|
||
|
||
<SELECT name=firma>
|
||
{html_options values=$vals selected=$selected output=$output}
|
||
</SELECT></programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
<sect1 id="language.syntax.quotes">
|
||
<title>Variablen in doppelten Anführungszeichen</title>
|
||
<para>
|
||
Smarty will recognize assigned variables embedded in double quotes so long
|
||
as the variables contain only numbers, letters, underscores and brackets
|
||
[]. With any other characters (period, object reference, etc.) the variable
|
||
must be surrounded by backticks.
|
||
Smarty erkennt zugewisene Variablen in doppelten Anführungszeichen solange
|
||
der Variablenname nur Zahlen, Buchstaben, Unterstriche oder Klammern [] enthaelt.
|
||
Wenn andere Zeichen (punkte, objekt referenzen, etc) verwendet werden, so muss
|
||
die Variable mit Backticks versehen werden.
|
||
</para>
|
||
<example>
|
||
<title>Anführungszeichen Syntax</title>
|
||
<programlisting>
|
||
Syntax Beispiele:
|
||
{func var="test $foo test"} <-- sieht $foo
|
||
{func var="test $foo_bar test"} <-- sieht $foo_bar
|
||
{func var="test $foo[0] test"} <-- sieht $foo[0]
|
||
{func var="test $foo[bar] test"} <-- sieht $foo[bar]
|
||
{func var="test $foo.bar test"} <-- sieht $foo (not $foo.bar)
|
||
{func var="test `$foo.bar` test"} <-- sieht $foo.bar
|
||
|
||
Anwendungsbeispiele:
|
||
{include file="subdir/$tpl_name.tpl"} <-- $tpl_name wird durch den Wert ersetzt
|
||
{cycle values="one,two,`$smarty.config.myval`"} <-- muss Backticks enthalten</programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
|
||
</chapter>
|
||
|
||
<chapter id="language.variables">
|
||
<title>Variablen</title>
|
||
<para>
|
||
Smarty hat verschiedene Variablentypen, welche weiter unten detailliert
|
||
beschrieben werden. Der Typ der Variable wird durch das Vorzeichen bestimmt.
|
||
</para>
|
||
|
||
<para>
|
||
Variablen können in Smarty direkt ausgegeben werden oder als Argumente
|
||
für Funktionsparameter und Modifikatoren sowie in Bedingungen verwendet werden.
|
||
Um eine Variable auszugeben, umschliessen Sie sie mit Trennzeichen, so dass
|
||
die Variable das einzige enthaltene Element ist. Beispiele:
|
||
<programlisting>
|
||
{$Name}
|
||
|
||
{$Kontakte[zeile].Telefon}
|
||
|
||
<body bgcolor="{#bgcolor#}"></programlisting>
|
||
</para>
|
||
|
||
<sect1 id="language.assigned.variables">
|
||
<title>Aus einem PHP-Skript zugewiesene Variablen</title>
|
||
<para>
|
||
Variablen die in einem PHP Skript zugewiesen wurden, müssen mit eine Dollar Zeichen <literal>$</literal>
|
||
versehen werden.
|
||
</para>
|
||
<example>
|
||
|
||
<title>zugewiesene Variablen</title>
|
||
<programlisting>
|
||
Hallo {$vorname}, schön dass Du wieder da bist.
|
||
<p>
|
||
Letzer zugriff: {$lastLoginDate}.
|
||
|
||
AUSGABE:
|
||
|
||
Hallo Andreas, schön dass Du wieder da bist.
|
||
<p>
|
||
Letzer Zugriff: January 11th, 2001.</programlisting>
|
||
</example>
|
||
|
||
<sect2 id="language.variables.assoc.arrays">
|
||
<title>Assoziative Arrays</title>
|
||
<para>
|
||
Sie können auch auf die Werte eines in PHP zugewiesenen assoziativen Arrays zugreifen,
|
||
indem Sie den Schlüssel nach einem '.'-Zeichen (Punkt) notieren.
|
||
</para>
|
||
<example>
|
||
<title>Zugriff auf Variablen eines assoziativen Arrays</title>
|
||
<programlisting>
|
||
{$Kontakte.fax}<br>
|
||
{$Kontakte.email}<br>
|
||
{* auch multidimensionale Arrays können so angesprochen werden *}
|
||
{$Kontakte.telefon.privat}<br>
|
||
{$Kontakte.telefon.mobil}<br>
|
||
|
||
AUSGABE:
|
||
|
||
555-222-9876<br>
|
||
zaphod@slartibartfast.com<br>
|
||
555-444-3333<br>
|
||
555-111-1234<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="language.variables.array.indexes">
|
||
<title>Array Index</title>
|
||
<para>
|
||
Arrays können - ähnlich der PHP-Syntax - auch über ihren Index angesprochen werden.
|
||
</para>
|
||
<example>
|
||
<title>Zugriff über den Array Index</title>
|
||
<programlisting>
|
||
{$Kontakte[0]}<br>
|
||
{$Kontakte[1]}<br>
|
||
{* auch hier sind multidimensionale Arrays möglich *}
|
||
{$Kontakte[0][0]}<br>
|
||
{$Kontakte[0][1]}<br></programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="language.variables.objects">
|
||
<title>Objekte</title>
|
||
<para>
|
||
Attribute von aus PHP zugewiesenen Objekten können
|
||
über das '->'-Symbol erreicht werden.
|
||
</para>
|
||
<example>
|
||
<title>Zugriff auf Objekt-Attribute</title>
|
||
<programlisting>
|
||
name: {$person->name}<br>
|
||
email: {$person->email}<br>
|
||
|
||
AUSGABE:
|
||
|
||
name: Zaphod Beeblebrox<br>
|
||
email: zaphod@slartibartfast.com<br></programlisting>
|
||
</example>
|
||
</sect2>
|
||
</sect1>
|
||
<sect1 id="language.config.variables">
|
||
<title>Verwendung von Variablen aus Konfigurationsdateien</title>
|
||
<para>
|
||
Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit
|
||
umschliessenden '#'-Zeichen (Raute), oder der Smarty Variable <link linkend="language.variables.smarty.config">$smarty.config</link>.
|
||
Die zweite Syntax ist sinnvoll, wenn Werte in Variablen mit Anf<6E>hrungszeichen geladen werden sollen.
|
||
|
||
</para>
|
||
<example>
|
||
|
||
<title>Konfigurationsvariablen</title>
|
||
<programlisting>
|
||
foo.conf:
|
||
|
||
seitenTitel = "This is mine"
|
||
bodyHintergrundFarbe = "#eeeeee"
|
||
tabelleRahmenBreite = "3"
|
||
tabelleHintergrundFarbe = "#bbbbbb"
|
||
reiheHintergrundFarbe = "#cccccc"
|
||
|
||
index.tpl:
|
||
|
||
{config_load file="foo.conf"}
|
||
<html>
|
||
<title>{#seitenTitel#}</title>
|
||
<body bgcolor="{#bodyHintergrundFarbe#}">
|
||
<table border="{#tabelleRahmenBreite#}" bgcolor="{#tabelleHintergrundFarbe#}">
|
||
<tr bgcolor="{#reiheHintergrundFarbe#}">
|
||
<td>Vornamen</td>
|
||
<td>Nachnamen</td>
|
||
<td>Adresse</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|
||
|
||
AUSGABE:
|
||
|
||
<html>
|
||
<title>This is mine</title>
|
||
<body bgcolor="#eeeeee">
|
||
<table border="3" bgcolor="#bbbbbb">
|
||
<tr bgcolor="#cccccc">
|
||
<td>Vornamen</td>
|
||
<td>Nachnamen</td>
|
||
<td>Adresse</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|
||
|
||
index.tpl: (alternate syntax)
|
||
|
||
{config_load file="foo.conf"}
|
||
<html>
|
||
<title>{$smarty.config.seitenTitel}</title>
|
||
<body bgcolor="{$smarty.config.bodyHintergrundFarbe}">
|
||
<table border="{$smarty.config.tabelleRahmenBreite}" bgcolor="{$smarty.config.tabelleHintergrundFarbe}">
|
||
<tr bgcolor="{$smarty.config.reiheHintergrundFarbe}">
|
||
<td>Vornamen</td>
|
||
<td>Nachnamen</td>
|
||
<td>Adresse</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html>
|
||
|
||
AUSGABE: (gleich, für beide Beispiele)
|
||
|
||
</programlisting>
|
||
</example>
|
||
<para>
|
||
Variablen aus Konfigurationsdateien können erst verwendet werden,
|
||
wenn sie aus der Datei geladen wurden. Dieser Vorgang wird im Abschnitt
|
||
<command>config_load</command> weiter unten näher erläutert.
|
||
</para>
|
||
</sect1>
|
||
|
||
<sect1 id="language.variables.smarty">
|
||
<title>Die reservierte {$smarty} Variable</title>
|
||
<para>
|
||
Die reservierte Variable {$smarty} wird verwendet, um auf spezielle Template-Variablen
|
||
zuzugreifen. Im Folgenden die Liste der Variablen:
|
||
</para>
|
||
|
||
<sect2 id="language.variables.smarty.request">
|
||
<title>Request-Variablen</title>
|
||
<para>
|
||
Auf die Request-Variablen (Anfragevariablen) 'get', 'post', 'cookie', 'server', 'environment' und 'session'
|
||
kann wie folgt zugegriffen werden:
|
||
</para>
|
||
<example>
|
||
|
||
<title>Ausgabe der Requestvariablen (Anfragevariablen)</title>
|
||
<programlisting>
|
||
{* anzeigen der variable 'page' aus der URL oder dem FORM, welche mit GET übertragen wurde *}
|
||
{$smarty.get.page}
|
||
|
||
{* anzeigen der variable 'page' welche mit POST übertragen wurde *}
|
||
{$smarty.post.page}
|
||
|
||
{* anzeigen des cookies "benutzer" *}
|
||
{$smarty.cookies.benutzer}
|
||
|
||
{* anzeigen der Server-Variable "SERVER_NAME" *}
|
||
{$smarty.server.SERVER_NAME}
|
||
|
||
{* anzeigen der Environment-Variable "PATH" *}
|
||
{$smarty.env.PATH}
|
||
|
||
{* anzeigen der Session-Variable "id" *}
|
||
{$smarty.session.id}
|
||
|
||
{* anzeigen der Variable "benutzer" aus dem $_REQUEST Array (Zusammenstellung von get/post/cookie/server/env) *}
|
||
{$smarty.request.benutzer}</programlisting>
|
||
|
||
</example>
|
||
</sect2>
|
||
|
||
<sect2 id="language.variables.smarty.now">
|
||
<title>{$smarty.now}</title>
|
||
<para>
|
||
Die momentane Unix-Timestamp kann über {$smarty.now} angefragt werden.
|
||
Diese Zahl ist die Summe der verstrichenen Sekunden seit Beginn der UNIX-Epoche
|
||
(1. Januar 1970) und kann zur Anzeige direkt dem 'date_format'-Modifikator
|
||
übergeben werden.
|
||
</para>
|
||
<example>
|
||
|
||
<title>Verwendung von {$smarty.now}</title>
|
||
<programlisting>
|
||
{* Verwendung des 'date_format'-Modifikators zur Anzeige der Zeit *}
|
||
{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}</programlisting>
|
||
</example>
|
||
</sect2>
|
||
|
||
<sect2 id="language.variables.smarty.capture">
|
||
<title>{$smarty.capture}</title>
|
||
<para>
|
||
Auf die mit dem {capture}..{/capture} Konstrukt abgefangene Ausgabe kann
|
||
via {$smarty} zugegriffen werden. Ein Beispiel dazu finden Sie im Abschnitt
|
||
zu <link linkend="language.function.capture">capture</link>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 id="language.variables.smarty.config">
|
||
<title>{$smarty.config}</title>
|
||
<para>
|
||
{$smarty} kann verwendet werden um auf geladenen Konfigurationsdateien zu referenzieren.
|
||
{$smarty.config.foo} ist ein Synonym für {#foo#}. Konsultieren Sie den Abschnitt
|
||
<link linkend="language.function.config.load">config_load</link> für ein Beispiel.
|
||
</para>
|
||
</sect2>
|
||
|
||
|
||
<sect2 id="language.variables.smarty.loops">
|
||
<title>{$smarty.section}, {$smarty.foreach}</title>
|
||
<para>
|
||
{$smarty} wird auch verwendet, um auf Eigenschaften von
|
||
'section' und 'foreach' Schleifen zuzugreifen. Weitere
|
||
Informationen dazu finden sie in der Dokumentation
|
||
von <link linkend="language.function.section">section</link>
|
||
und <link linkend="language.function.foreach">foreach</link>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 id="language.variables.smarty.template">
|
||
<title>{$smarty.template}</title>
|
||
<para>
|
||
Diese Variable enthält den Namen des gerade verarbeiteten Templates.
|
||
</para>
|
||
</sect2>
|
||
|
||
</sect1>
|
||
</chapter>
|
||
|
||
<chapter id="language.modifiers">
|
||
<title>Variablen-Modifikatoren</title>
|
||
<para>
|
||
Variablen-Modifikatoren können auf alle Variablen angewendet werden, um deren Inhalt zu verändern. Dazu
|
||
hängen sie einfach ein <literal>|</literal> (Pipe-Zeichen) und den Modifikatornamen an die entsprechende
|
||
Variable an. Ein Modifikator über Parameter in seiner Arbeitsweise beinflusst werden. Diese Parameter
|
||
werden dem Modifikatorname angehängt und mit <literal>:</literal> getrennt.
|
||
</para>
|
||
<example>
|
||
<title>Modifikator Beispiel</title>
|
||
<programlisting>
|
||
{* Schreibe den Titel in Grossbuchstaben *}
|
||
<h2>{$titel|upper}</h2>
|
||
|
||
{* Kürze das Thema auf 40 Zeichen, und hänge '...' an. *}
|
||
Thema: {$thema|truncate:40:"..."}</programlisting>
|
||
</example>
|
||
<para>
|
||
Wenn Sie einen Modifikator auf ein Array anwenden, wird dieser auf jeden Wert angewandt.
|
||
Um zu erreichen, dass der Modifkator auf den Array selbst angewendet wird, muss dem
|
||
Modifikator ein <literal>@</literal> Zeichen vorangestellt werden. Beispiel:
|
||
<literal>{$artikelTitel|@count}</literal> (gibt die Anzahl Elemente des Arrays $artikelTitel aus.)
|
||
</para>
|
||
|
||
<sect1 id="language.modifier.capitalize">
|
||
<title>capitalize (in Grossbuchstaben schreiben)</title>
|
||
<para>
|
||
Wird verwendet um den Anfangsbuchstaben aller Wörter in der Variable gross (upper case) zu schreiben.
|
||
</para>
|
||
<example>
|
||
<title>capitalize (in Grossbuchstaben schreiben)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|capitalize}
|
||
|
||
AUSGABE:
|
||
|
||
diebe haben in norwegen 20 tonnen streusalz entwendet.
|
||
Diebe Haben In Norwegen 20 Tonnen Streusalz Entwendet.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.count.characters">
|
||
<title>count_characters (Buchstaben zählen)</title>
|
||
<para>
|
||
Wird verwendet um die Anzahl Buchstaben in einer Variable auszugeben.
|
||
</para>
|
||
<example>
|
||
<title>count_characters (Buchstaben zählen)</title>
|
||
<programlisting>
|
||
|
||
{$artikelTitel}
|
||
{$artikelTitel|count_characters}
|
||
|
||
AUSGABE:
|
||
|
||
20% der US-Amerikaner finden ihr Land (die USA) nicht auf der Landkarte.
|
||
72</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.cat">
|
||
<title>cat</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=cat align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>cat</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Hängt den übergebenen Wert der Variable an.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Dieser Wert wird der Variable angehängt.
|
||
</para>
|
||
<example>
|
||
<title>cat</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
$smarty = new Smarty;
|
||
$smarty->assign('articleTitle', 'Psychics predict world didn't end');
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
{$articleTitle|cat:" yesterday."}
|
||
|
||
AUSGABE:
|
||
|
||
Psychics predict world didn't end yesterday.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
<sect1 id="language.modifier.count.paragraphs">
|
||
<title>count_paragraphs (Absätze zählen)</title>
|
||
<para>
|
||
Wird verwendet, um die Anzahl der Absätze in einer Variable zu ermitteln.
|
||
</para>
|
||
<example>
|
||
<title>count_paragraphs (Paragrafen zählen)</title>
|
||
<programlisting>
|
||
|
||
{$artikelTitel}
|
||
{$artikelTitel|count_paragraphs}
|
||
|
||
AUSGABE:
|
||
|
||
Britische Spezialeinheiten sind aufgrund eines "Navigationsfehlers" nicht wie beabsichtigt in Gibraltar an Land gegangen, sondern an einem Badestrand, der zu Spanien gehört.
|
||
|
||
Ein spanischer Lokführer hat aus Protest gegen die Arbeitsbedingungen nach gearbeiteten acht Stunden einfach seinen Zug stehen lassen, in dem sich allerdings noch 132 Passagiere befanden.
|
||
2</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.count.sentences">
|
||
<title>count_sentences (Sätze zählen)</title>
|
||
<para>
|
||
Wird verwendet, um die Anzahl der Sätze in einer Variable zu ermitteln.
|
||
</para>
|
||
<example>
|
||
<title>count_sentences (Sätze zählen)</title>
|
||
<programlisting>
|
||
|
||
{$artikelTitel}
|
||
{$artikelTitel|count_sentences}
|
||
|
||
AUSGABE:
|
||
|
||
Zwei Deutsche haben die sogenannte "Painstation" vorgestellt. Bei Fehlern im Spiel wird der Spieler durch Elektroschocks aus der Konsole bestraft. Wer länger aushält, hat gewonnen.
|
||
3</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.count.words">
|
||
<title>count_words (Wörter zählen)</title>
|
||
<para>
|
||
Wird verwendet, um die Anzahl Wörter in einer Variable zu ermiteln.
|
||
</para>
|
||
<example>
|
||
<title>count_words (Wörter zählen)</title>
|
||
<programlisting>
|
||
|
||
{$artikelTitel}
|
||
{$artikelTitel|count_words}
|
||
|
||
AUSGABE:
|
||
|
||
Südafrika: Eine Polizistin fesselte - mangels mitgebrachter Handschellen - drei Flüchtige mit ihrer Strumpfhose.
|
||
12</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.date.format">
|
||
<title>date_format (Datums Formatierung)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>%b %e, %Y</entry>
|
||
<entry>Das Format des ausgegebenen Datums.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>n/a</entry>
|
||
<entry>Der Standardwert (Datum) wenn die Eingabe leer ist.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Formatiert Datum und Uhrzeit in das definierte 'strftime()'-Format.
|
||
Daten können als Unix-Timestamps, MySQL-Timestamps
|
||
und jeder Zeichenkette die aus 'Monat Tag Jahr' (von strtotime parsebar) besteht
|
||
übergeben werden. Designer können 'date_format' verwenden,
|
||
um vollständige Kontrolle über das Format des Datums zu erhalten.
|
||
Falls das übergebene Datum leer ist und der zweite Parameter
|
||
übergeben wurde, wird dieser formatiert und ausgegeben.
|
||
</para>
|
||
<example>
|
||
<title>date_format (Datums Formatierung)</title>
|
||
<programlisting>
|
||
{$smarty.now|date_format}
|
||
{$smarty.now|date_format:"%A, %B %e, %Y"}
|
||
{$smarty.now|date_format:"%H:%M:%S"}
|
||
|
||
AUSGABE:
|
||
|
||
Feb 6, 2001
|
||
Tuesday, February 6, 2001
|
||
14:33:00</programlisting>
|
||
</example>
|
||
<example>
|
||
<title>'date_format' Konvertierungs Spezifikation</title>
|
||
<programlisting>
|
||
%a - abgekürzter Name des Wochentages, abhängig von der gesetzten Umgebung
|
||
|
||
%A - ausgeschriebener Name des Wochentages, abhängig von der gesetzten Umgebung
|
||
|
||
%b - abgekürzter Name des Monats, abhängig von der gesetzten Umgebung
|
||
|
||
%B - ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung
|
||
|
||
%c - Wiedergabewerte für Datum und Zeit, abhängig von der gesetzten Umgebung
|
||
|
||
%C - Jahrhundert (Jahr geteilt durch 100, gekürzt auf Integer, Wertebereich 00 bis 99)
|
||
|
||
%d - Tag des Monats als Zahl (Bereich 00 bis 31)
|
||
|
||
%D - so wie %m/%d/%y
|
||
|
||
%e - Tag des Monats als Dezimal-Wert, einstelligen Werten wird ein Leerzeichen voran gestellt (Wertebereich <20> 0<> bis <20>31<33>)
|
||
|
||
%g - wie %G, aber ohne Jahrhundert.
|
||
|
||
%G - Das vierstellige Jahr entsprechend der ISO Wochennummer (siehe %V). Das gleiche Format und der gleiche Wert wie bei %Y. Besonderheit: entspricht die ISO Wochennummer dem vorhergehenden oder folgenden Jahr, wird dieses Jahr verwendet.
|
||
|
||
%h - so wie %b
|
||
|
||
%H - Stunde als Zahl im 24-Stunden-Format (Bereich 00 bis 23)
|
||
|
||
%I - Stunde als Zahl im 12-Stunden-Format (Bereich 01 bis 12)
|
||
|
||
%j - Tag des Jahres als Zahl (Bereich 001 bis 366)
|
||
|
||
%m - Monat als Zahl (Bereich 01 bis 12)
|
||
|
||
%M - Minute als Dezimal-Wert
|
||
|
||
%n - neue Zeile
|
||
|
||
%p - entweder `am' oder `pm' (abhängig von der gesetzten Umgebung) oder die entsprechenden Zeichenketten der gesetzten Umgebung
|
||
|
||
%r - Zeit im Format a.m. oder p.m.
|
||
|
||
%R - Zeit in der 24-Stunden-Formatierung
|
||
|
||
%S - Sekunden als Dezimal-Wert
|
||
|
||
%t - Tabulator
|
||
|
||
%T - aktuelle Zeit, genau wie %H:%M:%S
|
||
|
||
%u - Tag der Woche als Dezimal-Wert [1,7], dabei ist 1 der Montag.
|
||
|
||
%U - Nummer der Woche des aktuellen Jahres als Dezimal-Wert, beginnend mit dem ersten Sonntag als erstem Tag der ersten Woche.
|
||
|
||
%V - Kalenderwoche (nach ISO 8601:1988) des aktuellen Jahres. Als Dezimal-Zahl mit dem Wertebereich 01 bis 53, wobei die Woche 01 die erste Woche mit mindestens 4 Tagen im aktuellen Jahr ist. Die Woche beginnt montags (nicht sonntags). (Benutzen Sie %G or %g für die Jahreskomponente, die der Wochennummer für den gegebenen Timestamp entspricht.)
|
||
|
||
%w - Wochentag als Dezimal-Wert, Sonntag ist 0
|
||
|
||
%W - Nummer der Woche des aktuellen Jahres, beginnend mit dem ersten Montag als erstem Tag der ersten Woche.
|
||
|
||
%x - bevorzugte Datumswiedergabe (ohne Zeit), abhängig von der gesetzten Umgebung.
|
||
|
||
%X - bevorzugte Zeitwiedergabe (ohne Datum), abhängig von der gesetzten Umgebung.
|
||
|
||
%y - Jahr als 2-stellige-Zahl (Bereich 00 bis 99)
|
||
|
||
%Y - Jahr als 4-stellige-Zahl inklusive des Jahrhunderts
|
||
|
||
%Z - Zeitzone, Name oder eine Abkürzung
|
||
|
||
%% - ein %-Zeichen
|
||
|
||
BEMERKUNG FÜR PROGRAMMIERER: 'date_format' ist ein wrapper für PHP's 'strftime()'-Funktion.
|
||
Je nachdem auf welchem System ihr PHP kompiliert wurde, ist es durchaus möglich, dass nicht alle
|
||
angegebenen Formatierungszeichen unterstützt werden. Beispielsweise stehen %e, %T, %R und %D
|
||
(eventuell weitere) auf Windowssystemen nicht zur Verfügung.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.default">
|
||
<title>default (Standardwert)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>leer</emphasis></entry>
|
||
<entry>Dieser Wert wird ausgegeben wenn die Variable leer ist.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Wird verwendet um den Standardwert einer Variable festzulegen.
|
||
Falls die Variable leer ist oder nicht gesetzt wurde,
|
||
wird dieser Standardwert ausgegeben.
|
||
Default (Standardwert) hat 1 Parameter.
|
||
</para>
|
||
<example>
|
||
<title>default (Standardwert)</title>
|
||
<programlisting>
|
||
{* gib "kein Titel" (ohne Anführungszeichen) aus, falls '$artikelTitel' leer ist *}
|
||
{$artikelTitel|default:"kein Titel"}
|
||
|
||
AUSGABE:
|
||
|
||
kein Titel</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.escape">
|
||
<title>escape (Maskieren)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=6>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=possible align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Mögliche (erlaubte) Werte</entry>
|
||
<entry>Standardwerte</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>html, htmlall, url, quotes, hex, hexentity</entry>
|
||
<entry>html</entry>
|
||
<entry>Definiert die zu verwendende Maskierung.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Wird verwendet um eine Variable mit HTML, URL oder
|
||
einfachen Anführungszeichen, beziehungsweise Hex oder Hex-Entitäten
|
||
zu maskieren. Hex und Hex-Entity kann verwendet werden um "mailto:"
|
||
-Links so zu verändern, dass sie von Web-Spiders (E-Mail Sammlern)
|
||
verborgen bleiben und dennoch les-/linkbar für Webbrowser bleiben.
|
||
Als Standard, wird 'HTML'-Maskierung verwendet.
|
||
</para>
|
||
<example>
|
||
<title>escape (Maskieren)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|escape}
|
||
{$artikelTitel|escape:"html"} {* maskiert & " ' < > *}
|
||
{$artikelTitel|escape:"htmlall"} {* maskiert ALLE html Entitäten *}
|
||
{$artikelTitel|escape:"url"}
|
||
{$artikelTitel|escape:"quotes"}
|
||
<a
|
||
href="mailto:{$EmailAdresse|escape:"hex"}">{$EmailAdresse|escape:"hexentity"}</a>
|
||
|
||
AUSGABE:
|
||
|
||
'Zwei Unbekannte haben im Lidl in Monheim 24 Pakete Kaffee gestohlen.'
|
||
'Zwei%20Unbekannte%20haben%20im%20Lidl%20in%20Monheim%2024%20Pakete%20Kaffee%20gestohlen.'
|
||
'Zwei%20Unbekannte%20haben%20im%20Lidl%20in%20Monheim%2024%20Pakete%20Kaffee%20gestohlen.'
|
||
'Zwei%20Unbekannte%20haben%20im%20Lidl%20in%20Monheim%2024%20Pakete%20Kaffee%20gestohlen.'
|
||
'Zwei+Unbekannte+haben+im+Lidl+in+Monheim+24+Pakete+Kaffee+gestohlen.'
|
||
\'Zwei Unbekannte haben im Lidl in Monheim 24 Pakete Kaffee gestohlen.\'
|
||
<a
|
||
href="mailto:%62%6f%62%40%6d%65%2e%6e%65%74">&#x62;&#x6f;&#x62;&#x40;&#x6d;&#x65;&#x2e;&#x6e;&#x65;&#x74;</a></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.indent">
|
||
<title>indent (Einrücken)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry>4</entry>
|
||
<entry>Definiert die Länge der Zeichenkette die verwendet werden soll um den Text einzurücken.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>(ein Leerschlag)</entry>
|
||
<entry>Definiert das Zeichen, welches verwendet werden soll um den Text einzurücken.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Wird verwendet, um eine Zeichenkette auf jeder Zeile einzurücken.
|
||
Optionaler Parameter ist die Anzahl der Zeichen,
|
||
um die der Text eingerückt werden soll. Standardlänge ist 4.
|
||
Als zweiten optionalen Parameter können sie ein Zeichen übergeben,
|
||
das für die Einrückung verwendet werden soll (für Tabulatoren: '\t').
|
||
</para>
|
||
<example>
|
||
<title>indent (Einrücken)</title>
|
||
<programlisting>
|
||
{$arikelTitel}
|
||
|
||
{$arikelTitel|indent}
|
||
|
||
{$arikelTitel|indent:10}
|
||
|
||
{$arikelTitel|indent:1:"\t"}
|
||
|
||
AUSGABE:
|
||
|
||
Nach einer feuchtfröhlichen Nacht fand ein Brite sein Auto
|
||
nicht mehr und meldete es als gestohlen. Ein Jahr später
|
||
besuchte er den Ort wieder und erinnerte sich, dass er
|
||
das Auto nur an einem anderen Ort abgestellt hatte -
|
||
dort stand das Fahrzeug nach einem Jahr auch noch.
|
||
|
||
Nach einer feuchtfröhlichen Nacht fand ein Brite sein Auto
|
||
nicht mehr und meldete es als gestohlen. Ein Jahr später
|
||
besuchte er den Ort wieder und erinnerte sich, dass er
|
||
das Auto nur an einem anderen Ort abgestellt hatte -
|
||
dort stand das Fahrzeug nach einem Jahr auch noch.
|
||
|
||
Nach einer feuchtfröhlichen Nacht fand ein Brite sein Auto
|
||
nicht mehr und meldete es als gestohlen. Ein Jahr später
|
||
besuchte er den Ort wieder und erinnerte sich, dass er
|
||
das Auto nur an einem anderen Ort abgestellt hatte -
|
||
dort stand das Fahrzeug nach einem Jahr auch noch.
|
||
|
||
Nach einer feuchtfröhlichen Nacht fand ein Brite sein Auto
|
||
nicht mehr und meldete es als gestohlen. Ein Jahr später
|
||
besuchte er den Ort wieder und erinnerte sich, dass er
|
||
das Auto nur an einem anderen Ort abgestellt hatte -
|
||
dort stand das Fahrzeug nach einem Jahr auch noch.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.lower">
|
||
<title>lower (in Kleinbuchstaben schreiben)</title>
|
||
<para>
|
||
Wird verwendet um eine Zeichenkette in Kleinbuchstaben auszugeben.
|
||
</para>
|
||
<example>
|
||
<title>lower (in Kleinbuchstaben schreiben)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|lower}
|
||
|
||
AUSGABE:
|
||
|
||
In Kalifornien wurde ein Hund in das Wählerverzeichnis eingetragen.
|
||
in kalifornien wurde ein hund in das wählerverzeichnis eingetragen.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.nl2br">
|
||
<title>nl2br</title>
|
||
<para>
|
||
Konvertiert alle Zeilenschaltungen in der Variable in <br /> Tags.
|
||
Verhält sich gleich wie die PHP Funktion 'nl2br()'.
|
||
</para>
|
||
<example>
|
||
<title>nl2br</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
$smarty = new Smarty;
|
||
$smarty->assign('articleTitle', "Sun or rain expected\ntoday, dark tonight");
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
{$articleTitle|nl2br}
|
||
|
||
AUSGABE:
|
||
|
||
Sun or rain expected<br />today, dark tonight</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.regex.replace">
|
||
<title>regex_replace (Ersetzen mit regulären Ausdrücken)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert das zu ersetzende Suchmuster, als regulären Ausdruck.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert die ersetzende Zeichenkette.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Suchen/Ersetzen mit regulären Ausdrücken. Folgt der Syntax von PHP's preg_replace().
|
||
</para>
|
||
<example>
|
||
<title>regex_replace (Ersetzen mit regulären Ausdrücken)</title>
|
||
<programlisting>
|
||
{* Ersetzt jeden Zeilenumbruch-Tabulator-Neuezeile, durch ein Leerzeichen. *}
|
||
|
||
{$artikelTitel}
|
||
{$artikelTitel|regex_replace:"/[\r\t\n]/":" "}
|
||
|
||
AUSGABE:
|
||
|
||
Ein Bankangestellter in England zerkaut aus Stress
|
||
bei der Arbeit wöchentlich 50 Kugelschreiber. Er ist deshalb in Behandlung.
|
||
Ein Bankangestellter in England zerkaut aus Stress bei der Arbeit wöchentlich 50 Kugelschreiber. Er ist deshalb in Behandlung.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.replace">
|
||
<title>replace (Ersetzen)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die zu ersetzende Zeichenkette.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die ersetzende Zeichenkette.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Einfaches suchen/ersetzen in einer Variable.
|
||
</para>
|
||
<example>
|
||
<title>replace (Ersetzen)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|replace:"Fracht":"Lieferung"}
|
||
{$artikelTitel|replace:" ":" "}
|
||
|
||
AUSGABE:
|
||
|
||
Ein Holsten-Laster hat in England seine komplette Fracht verloren, die nun von jedermann aufgesammelt werden kann.
|
||
Ein Holsten-Laster hat in England seine komplette Lieferung verloren, die nun von jedermann aufgesammelt werden kann.
|
||
Ein Holsten-Laster hat in England seine komplette Fracht verloren, die nun von jedermann aufgesammelt werden kann.
|
||
</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.spacify">
|
||
<title>spacify (Zeichenkette splitten)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>ein Leerzeichen</emphasis></entry>
|
||
<entry>Definiert die zwischen allen Zeichen einzufügende Zeichenkette.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Fügt zwischen allen Zeichen einer Variablen ein Leerzeichen ein.
|
||
Eine alternativ einzufügende Zeichenkette kann über
|
||
den ersten Parameter definiert werden.
|
||
</para>
|
||
<example>
|
||
<title>spacify (Zeichenkette splitten)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|spacify}
|
||
{$artikelTitel|spacify:"^^"}
|
||
|
||
AUSGABE:
|
||
|
||
Ein Mann flog 5000 km um sich die Haare schneiden zu lassen. Grund: Seine offensichtlich begnadete Friseuse zog von den Bermudas nach England und bis dato fand er keine Neue.
|
||
E i n M a n n f l o g 5 0 0 0 k m u m s i c h d i e H a a r e s c h n e i d e n z u l a s s e n . G r u n d : S e i n e o f f e n s i c h t l i c h b e g n a d e t e F r i s e u s e z o g v o n d e n B e r m u d a s n a c h E n g l a n d u n d b i s d a t o f a n d e r k e i n e N e u e .
|
||
E^^i^^n^^ ^^M^^a^^n^^n^^ ^^f^^l^^o^^g^^ ^^5^^0^^0^^0^^ ^^k^^m^^ ^^u^^m^^ ^^s^^i^^c^^h^^ ^^d^^i^^e^^ ^^H^^a^^a^^r^^e^^ ^^s^^c^^h^^n^^e^^i^^d^^e^^n^^ ^^z^^u^^ ^^l^^a^^s^^s^^e^^n^^.^^ ^^G^^r^^u^^n^^d^^:^^ ^^S^^e^^i^^n^^e^^ ^^o^^f^^f^^e^^n^^s^^i^^c^^h^^t^^l^^i^^c^^h^^ ^^b^^e^^g^^n^^a^^d^^e^^t^^e^^ ^^F^^r^^i^^s^^e^^u^^s^^e^^ ^^z^^o^^g^^ ^^v^^o^^n^^ ^^d^^e^^n^^ ^^B^^e^^r^^m^^u^^d^^a^^s^^ ^^n^^a^^c^^h^^ ^^E^^n^^g^^l^^a^^n^^d^^ ^^u^^n^^d^^ ^^b^^i^^s^^ ^^d^^a^^t^^o^^ ^^f^^a^^n^^d^^ ^^e^^r^^ ^^k^^e^^i^^n^^e^^ ^^N^^e^^u^^e^^.^^</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.string.format">
|
||
<title>string_format (Zeichenkette formatieren)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erfoderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Das zu verwendende Format (sprintf).</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Wird verwendet um eine Zeichenkette, wie zum Beispiel dezimale Werte, zu formatieren.
|
||
Folgt der Formatierungs-Syntax von sprintf.
|
||
</para>
|
||
<example>
|
||
<title>string_format (Zeichenkette formatieren)</title>
|
||
<programlisting>
|
||
{$wert}
|
||
{$wert|string_format:"%.2f"}
|
||
{$wert|string_format:"%d"}
|
||
|
||
AUSGABE:
|
||
|
||
23.5787446
|
||
23.58
|
||
24</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.strip">
|
||
<title>strip (Zeichenkette strippen)</title>
|
||
<para>
|
||
Ersetzt mehrfache Leerzeichen, Zeilenumbrüche und Tabulatoren durch ein Leerzeichen
|
||
oder eine alternative Zeichenkette.
|
||
</para>
|
||
<note>
|
||
<title>Achtung</title>
|
||
<para>
|
||
Falls Sie ganze Blöcke eines Templates 'strippen' möchten,
|
||
verwenden Sie dazu <link linkend="language.function.strip">strip</link>.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>strip (Zeichenkette strippen)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|strip}
|
||
{$artikelTitel|strip:"&nbsp;"}
|
||
|
||
AUSGABE:
|
||
|
||
Ein 18 Jahre alter Pappkarton
|
||
erzielte bei Ebay einen Erlös von
|
||
536 Dollar. Es war der Karton, in dem der erste Apple verpackt war.
|
||
Ein 18 Jahre alter Pappkarton erzielte bei Ebay einen Erlös von 536 Dollar. Es war der Karton, in dem der erste Apple verpackt war.
|
||
Ein&nbsp;18&nbsp;Jahre&nbsp;alter&nbsp;Pappkarton&nbsp;erzielte&nbsp;bei&nbsp;Ebay&nbsp;einen&nbsp;Erlös&nbsp;von&nbsp;536&nbsp;Dollar.&nbsp;Es&nbsp;war&nbsp;der&nbsp;Karton,&nbsp;in&nbsp;dem&nbsp;der&nbsp;erste&nbsp;Apple&nbsp;verpackt&nbsp;war.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.strip.tags">
|
||
<title>strip_tags (HTML-Tags entfernen)</title>
|
||
<para>
|
||
Entfernt alle HTML-Tags, beziehungsweise Zeichenketten die von < und > umschlossen sind.
|
||
</para>
|
||
<example>
|
||
<title>strip_tags (HTML-Tags entfernen)</title>
|
||
<programlisting>
|
||
{$atrikelTitel}
|
||
{$atrikelTitel|strip_tags}
|
||
|
||
AUSGABE:
|
||
|
||
Da ein <font face="helvetica">betrunkener Mann</font> auf einem Flug ausfallend wurde, musste <b>das Flugzeug</b> auf einer kleinen Insel zwischenlanden und den Mann aussetzen.
|
||
Da ein betrunkener Mann auf einem Flug ausfallend wurde, musste das Flugzeug auf einer kleinen Insel zwischenlanden und den Mann aussetzen.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.truncate">
|
||
<title>truncate (kürzen)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry>80</entry>
|
||
<entry>Länge, auf die die Zeichenkette gekürzt werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>...</entry>
|
||
<entry> An die gekürzte Zeichenkette anzuhängende Zeichenkette.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>false</entry>
|
||
<entry>Nur nach ganzen Worten (false) oder exakt an der definierten Stelle (true) kürzen.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Kürzt die Variable auf eine definierte Länge. Standardwert sind 80 Zeichen.
|
||
Als optionaler zweiter Parameter kann eine Zeichenkette übergeben werden, welche
|
||
der gekürzten Variable angehängt wird. Diese zusätzliche Zeichenkette
|
||
wird bei der Berechnung der Länge berücksichtigt. Normalerweise wird
|
||
'truncate' versuchen, die Zeichenkette zwischen zwei Wörtern umzubrechen. Um die
|
||
Zeichenkette exakt an der definierten Position abzuscheiden,
|
||
können sie als dritten Parameter 'true' übergeben.
|
||
</para>
|
||
<example>
|
||
<title>truncate (kürzen)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|truncate}
|
||
{$artikelTitel|truncate:30}
|
||
{$artikelTitel|truncate:30:""}
|
||
{$artikelTitel|truncate:30:"---"}
|
||
{$artikelTitel|truncate:30:"":true}
|
||
{$artikelTitel|truncate:30:"...":true}
|
||
|
||
AUSGABE:
|
||
|
||
George W. Bush will die frei gewählten Mitglieder der ICANN ("Internetregierung") durch Regierungsvertreter der USA ersetzen.
|
||
George W. Bush will die frei gewählten Mitglieder der ICANN ("Internetregierung") durch Regierungsvertreter der USA ersetzen.
|
||
George W. Bush will die frei...
|
||
George W. Bush will die frei
|
||
George W. Bush will die frei---
|
||
George W. Bush will die frei
|
||
George W. Bush will die fr...</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.upper">
|
||
<title>upper (in Grossbuchstaben umwandeln)</title>
|
||
<para>
|
||
Wandelt eine Zeichenkette in Grossbuchstaben um.
|
||
</para>
|
||
<example>
|
||
<title>upper (in Grossbuchstaben umwandeln)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|upper}
|
||
|
||
AUSGABE:
|
||
|
||
Ein 58jähriger Belgier ist nach 35 Jahren zum Sieger der Weltmeisterschaft im Querfeldeinrennen 1967 erklärt worden - Grund: Ein damaliger Formfehler.
|
||
EIN 58JÄHRIGER BELGIER IST NACH 35 JAHREN ZUM SIEGER DER WELTMEISTERSCHAFT IM QUERFELDEINRENNEN 1967 ERKLÄRT WORDEN - GRUND: EIN DAMALIGER FORMFEHLER.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.modifier.wordwrap">
|
||
<title>wordwrap (Zeilenumbruch)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param>
|
||
<colspec colname=type>
|
||
<colspec colname=required>
|
||
<colspec colname=default>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Parameter Position</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry>80</entry>
|
||
<entry>Definiert maximale Länge einer Zeile in der umzubrechenden Zeichenkette.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>\n</entry>
|
||
<entry>Definiert das zu verwendende Zeichen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>false</entry>
|
||
<entry>Definiert ob die Zeichenkette nur zwischen Wörtern getrennt (false), oder auch abgeschnitten werden darf (true).</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Bricht eine Zeichenkette an einer definierten Stelle (Standardwert 80) um.
|
||
Als optionaler zweiter Parameter kann das Zeichen übergeben werden,
|
||
welches zum Umbrechen verwendet werden soll (Standardwert '\n'). Normalerweise
|
||
bricht wordwrap nur zwischen zwei Wörtern um. Falls Sie exakt an der
|
||
definierten Stelle umbrechen wollen, übergeben
|
||
Sie als optionalen dritten Parameter 'true'.
|
||
</para>
|
||
<example>
|
||
<title>wordwrap (Zeilenumbruch)</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
|
||
{$artikelTitel|wordwrap:75}
|
||
|
||
{$artikelTitel|wordwrap:50}
|
||
|
||
{$artikelTitel|wordwrap:75:"<br>\n"}
|
||
|
||
{$artikelTitel|wordwrap:75:"\n":true}
|
||
|
||
AUSGABE:
|
||
|
||
Eine Frau stahl in einem Bekleidungsgeschäft eine Hose und kam kurz danach zurück, um die Hose umzutauschen, weil die Grösse nicht passte.
|
||
|
||
Eine Frau stahl in einem Bekleidungsgeschäft eine Hose und kam kurz
|
||
danach zurück, um die Hose umzutauschen, weil die Grösse nicht
|
||
passte.
|
||
|
||
Eine Frau stahl in einem Bekleidungsgeschäft
|
||
eine Hose und kam kurz danach zurück, um die
|
||
Hose umzutauschen, weil die Grösse nicht
|
||
passte.
|
||
|
||
Eine Frau stahl in einem Bekleidungsgeschäft eine Hose und kam kurz<br>
|
||
danach zurück, um die Hose umzutauschen, weil die Grösse nicht<br>
|
||
passte.
|
||
|
||
Eine Frau stahl in einem Bekleidungsgeschäft eine Hose und kam kurz d
|
||
anach zurück, um die Hose umzutauschen, weil die Grösse nicht pass
|
||
te.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
</chapter>
|
||
|
||
<chapter id="language.combining.modifiers">
|
||
<title>Kombinieren von Modifikatoren</title>
|
||
<para>
|
||
Sie können auf eine Variable so viele Modifikatoren anwenden wie Sie möchten.
|
||
Die Modifkatoren werden in der Reihenfolge angewandt, in der sie notiert wurden - von links nach rechts.
|
||
Kombinierte Modifikatoren müssen mit einem <literal>|</literal>-Zeichen (pipe) getrennt werden.
|
||
</para>
|
||
<example>
|
||
<title>Kombinieren von Modifikatoren</title>
|
||
<programlisting>
|
||
{$artikelTitel}
|
||
{$artikelTitel|upper|spacify}
|
||
{$artikelTitel|lower|spacify|truncate}
|
||
{$artikelTitel|lower|truncate:30|spacify}
|
||
{$artikelTitel|lower|spacify|truncate:30:". . ."}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
Einem Stadtrat in Salem in Pennsylvania (USA) droht eine zweijährige Haftstrafe, da eine von ihm gehaltene Rede sechs Minuten länger dauerte, als erlaubt. Die Redezeit ist auf maximal fünf Minuten begrenzt.
|
||
|
||
EINEM STADTRAT IN SALEM IN PENNSYLVANIA (USA) DROHT EINE ZWEIJäHRIGE HAFTSTRAFE, DA EINE VON IHM GEHALTENE REDE SECHS MINUTEN LäNGER DAUERTE, ALS ERLAUBT. DIE REDEZEIT IST AUF MAXIMAL FüNF MINUTEN BEGRENZT.
|
||
|
||
e i n e m s t a d t r a t i n s a l e m i n...
|
||
|
||
e i n e m s t a d t r a t i n s a l e m i n . . .
|
||
|
||
e i n e m s t a d t r. . .</programlisting>
|
||
</example>
|
||
</chapter>
|
||
|
||
|
||
<chapter id="language.builtin.functions">
|
||
<title>Eingebaute Funktionen</title>
|
||
<para>
|
||
Smarty enthält eine Reihe eingebauter Funktionen. Eingebaute Funktionen
|
||
sind integral für die Template-Sprache. Sie können sie weder
|
||
verändern noch eigene Funktionen unter selbem Namen erstellen.
|
||
</para>
|
||
<sect1 id="language.function.capture">
|
||
<title>capture (Ausgabe abfangen)</title>
|
||
<para>
|
||
'capture' wird verwendet, um die Template-Ausgabe abzufangen und in einer
|
||
Variable zu speichern. Der Inhalt zwischen {capture name="foo"} und {/capture}
|
||
wird unter der im 'name' Attribut angegebenen Variable abgelegt und kann über
|
||
'$smarty.capture.foo' angesprochen werden. Falls kein 'name'-Attribut
|
||
übergeben wurde, wird der Inhalt in 'default' abgelegt.
|
||
Jede {capture} Sektion muss mit {/capture} beendet werden.
|
||
'capture'-Blöcke können verschachtelt sein.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Smarty 1.4.0 - 1.4.4 speicherte den abgefangenen Inhalt in der
|
||
Variable '$return'. Seit 1.4.5 wird das 'name'-Attribut verwenden.
|
||
Bitte passen Sie Ihre Templates entsprechend an.
|
||
</para>
|
||
</note>
|
||
<caution>
|
||
<para>
|
||
Seien Sie vorsichtig, wenn sie die Ausgabe von <command>insert</command>
|
||
abfangen wollen. Sie sollten die Ausgabe nicht abfangen, wenn Caching
|
||
eingeschaltet ist und Sie einen <command>insert</command>
|
||
Befehl verwenden, um Ausgaben vom Caching auszuschliessen.
|
||
</para>
|
||
</caution>
|
||
<para>
|
||
<example>
|
||
<title>Template-Inhalte abfangen</title>
|
||
<programlisting>
|
||
|
||
{* Tabellenzeile nur ausgeben, wenn Inhalt vorhanden *}
|
||
{capture name=banner}
|
||
{include file="get_banner.tpl"}
|
||
{/capture}
|
||
{if $smarty.capture.banner ne ""}
|
||
<tr>
|
||
<td>
|
||
{$smarty.capture.banner}
|
||
</td>
|
||
</tr>
|
||
{/if}</programlisting>
|
||
</example>
|
||
</para>
|
||
</sect1>
|
||
<sect1 id="language.function.config.load">
|
||
<title>config_load (Konfiguration laden)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>file</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert den Namen der einzubindenden Datei.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>section</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert den Namen des zu ladenden Abschnitts.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>scope</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>local</emphasis></entry>
|
||
<entry>
|
||
Definiert den Geltungsbereich der zu ladenden Variablen.
|
||
Erlaubte Werte sind 'local','parent' und 'global'. 'local' bedeutet,
|
||
dass die Variablen in den Context des lokalen Template geladen werden.
|
||
'parent' bedeutet, dass die Variablen sowohl in den lokalen Context,
|
||
als auch in den Context des aufrufenden Templates eingebunden werden.
|
||
'global' bedeutet, dass die Variablen von allen Templates zugänglich sind.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>global</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>No</emphasis></entry>
|
||
<entry>
|
||
DEPRECATED:
|
||
Definiert, ob die Variablen von allen Templates aus zugänglich sind.
|
||
Dieses Attribut wird von 'scope' abgelöst und sollte nicht mehr
|
||
verwendet werden. Falls 'scope' übergeben wurde, wird 'global' ignoriert.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Diese Funktion wird verwendet, um Variablen aus einer Konfigurationsdatei
|
||
in das Template zu laden. Sehen sie <link linkend="config.files">Config Files (Konfigurationsdateien)</link>
|
||
für weitere Informationen.
|
||
</para>
|
||
<example>
|
||
<title>Funktion config_load</title>
|
||
|
||
<programlisting>
|
||
{config_load file="farben.conf"}
|
||
<html>
|
||
<title>{#seitenTitel#}</title>
|
||
<body bgcolor="{#bodyHintergrundFarbe#}">
|
||
<table border="{#tabelleRahmenBreite#}" bgcolor="{#tabelleHintergrundFarbe#}">
|
||
<tr bgcolor="{#reiheHintergrundFarbe#}">
|
||
<td>Vornamen</td>
|
||
<td>Nachnamen</td>
|
||
<td>Adresse</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html></programlisting>
|
||
</example>
|
||
<para>
|
||
Konfigurationsdateien können Abschnitte enthalten. Um Variablen
|
||
aus einem Abschnitt zu laden, können Sie das Attribut
|
||
<emphasis>section</emphasis> übergeben.
|
||
</para>
|
||
<para>
|
||
Bemerkung: <emphasis>Konfigurationdatei-Abschnitte (sections)</emphasis> und die
|
||
eingebaute Template Funktion namens <emphasis>section</emphasis> haben ausser dem
|
||
Namen nichts gemeinsam.
|
||
</para>
|
||
<example>
|
||
<title>Funktion config_load mit Abschnitten</title>
|
||
<programlisting>
|
||
{config_load file="farben.conf" section="Kunde"}
|
||
<html>
|
||
<title>{#seitenTitel#}</title>
|
||
<body bgcolor="{#bodyHintergrundFarbe#}">
|
||
<table border="{#tabelleRahmenBreite#}" bgcolor="{#tabelleHintergrundFarbe#}">
|
||
<tr bgcolor="{#reiheHintergrundFarbe#}">
|
||
<td>Vornamen</td>
|
||
<td>Nachnamen</td>
|
||
<td>Adresse</td>
|
||
</tr>
|
||
</table>
|
||
</body>
|
||
</html></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.foreach">
|
||
<title>foreach, foreachelse</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>from</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name des zu durchlaufenden Array.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>item</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name für das aktuelle Element.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>key</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name für den aktuellen Schlüssel.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name der 'foreach'-Schleife, für die Abfrage der 'foreach'-Eigenschaften.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Die <emphasis>foreach</emphasis> Schleife ist eine Alternative zu <emphasis>section</emphasis>.
|
||
<emphasis>foreach</emphasis> wird verwendet, um ein assoziatives Array
|
||
zu durchlaufen. Die Syntax von <emphasis>foreach</emphasis>-Schleifen ist viel einfacher als
|
||
die von <emphasis>section</emphasis>. <emphasis>foreach</emphasis> tags müssen mit <emphasis>/foreach</emphasis>
|
||
tags kombiniert werden. Erforderliche Parameter sind: <emphasis>from</emphasis> und
|
||
<emphasis>item</emphasis>. Der Name der 'foreach'-Schleife kann frei vergeben werden
|
||
und sowohl Buchstaben, Zahlen als auch Unterstriche enthalten.
|
||
<emphasis>foreach</emphasis>-Schleifen können verschachtelt werden, dabei ist
|
||
zu beachten, dass sich die definierten Namen voneinander unterscheiden.
|
||
Die <emphasis>from</emphasis> Variable (normalerweise
|
||
ein assoziatives Array) definiert die Anzahl der von <emphasis>foreach</emphasis>
|
||
zu durchlaufenen Iterationen. <emphasis>foreachelse</emphasis> wird ausgeführt wenn
|
||
keine Werte in der <emphasis>from</emphasis> Variable übergeben wurden.
|
||
</para>
|
||
<example>
|
||
<title>foreach</title>
|
||
<programlisting>
|
||
|
||
|
||
|
||
{* dieses Beispiel gibt alle Werte aus dem $KundenId Array aus *}
|
||
{foreach from=$KundenId item=aktuelle_id}
|
||
id: {$aktuelle_id}<br>
|
||
{/foreach}
|
||
|
||
AUSGABE:
|
||
|
||
id: 1000<br>
|
||
id: 1001<br>
|
||
id: 1002<br></programlisting>
|
||
</example>
|
||
|
||
<example>
|
||
<title>foreach key</title>
|
||
<programlisting>
|
||
{* Der Schlüssel enthält den Schlüssel des jeweils iterierten Wertes
|
||
|
||
die Zuweisung sieht wie folgt aus:
|
||
|
||
$smarty->assign("kontakte", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
|
||
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234")));
|
||
|
||
*}
|
||
|
||
{foreach name=aussen item=kontakt from=$kontakte}
|
||
{foreach key=schluessel item=wert from=$kontakt}
|
||
{$schluessel}: {$wert}<br>
|
||
{/foreach}
|
||
{/foreach}
|
||
|
||
AUSGABE:
|
||
|
||
phone: 1<br>
|
||
fax: 2<br>
|
||
cell: 3<br>
|
||
phone: 555-4444<br>
|
||
fax: 555-3333<br>
|
||
cell: 760-1234<br></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.include">
|
||
<title>include (einbinden)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>file</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name der Template-Datei, die eingebunden werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Variable, welcher der eingebundene Inhalt zugewiesen werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>[var ...]</entry>
|
||
<entry>[var typ]</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Variablen welche dem Template lokal übergeben werden sollen.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Include Tags werden verwendet, um andere Templates in das aktuelle Template einzubinden.
|
||
Alle Variablen des aktuellen Templates sind auch im eingebundenen Template verfügbar.
|
||
Das include-Tag muss ein 'file' Attribut mit dem Pfad zum einzubindenden
|
||
Template enthalten.
|
||
</para>
|
||
<para>
|
||
Optional kann mit dem <emphasis>assign</emphasis> Attribut definiert werden,
|
||
in welcher Variable die Ausgabe des mit <emphasis>include</emphasis> eingebundenen
|
||
Templates abgelegt werden soll statt sie auszugeben.
|
||
</para>
|
||
<example>
|
||
<title>function include (einbinden)</title>
|
||
<programlisting>
|
||
{include file="header.tpl"}
|
||
|
||
{* hier kommt der body des Templates *}
|
||
|
||
{include file="footer.tpl"}</programlisting>
|
||
</example>
|
||
<para>
|
||
Sie können dem einzubindenden Template Variablen
|
||
als Attribute übergeben. Alle explizit übergebenen
|
||
Variablen sind nur im Anwendungsbereich (scope) dieses Template
|
||
verfügbar. Attribut-Variablen überschreiben
|
||
aktuelle Template-Variablen, falls sie den gleichen Namen haben.
|
||
</para>
|
||
<example>
|
||
<title>include-Funktion und Variablen Übergabe</title>
|
||
<programlisting>
|
||
{include file="header.tpl" title="Hauptmenu" table_bgcolor="#c0c0c0"}
|
||
|
||
{* hier kommt der body des Templates *}
|
||
|
||
{include file="footer.tpl" logo="http://my.domain.com/logo.gif"}</programlisting>
|
||
</example>
|
||
<para>
|
||
Benutzen sie die Syntax von <link linkend="template.resources">template resources</link>,
|
||
um Templates ausserhalb des '$template_dir' einzubinden:
|
||
</para>
|
||
<example>
|
||
<title>Beispiele für Template-Ressourcen bei der 'include'-Funktion</title>
|
||
<programlisting>
|
||
{* absoluter Dateipfad *}
|
||
{include file="/usr/local/include/templates/header.tpl"}
|
||
|
||
{* absoluter Dateipfad (gleich) *}
|
||
{include file="file:/usr/local/include/templates/header.tpl"}
|
||
|
||
{* absoluter Dateipfad unter Windows ("file:"-Prefix MUSS übergeben werden) *}
|
||
{include file="file:C:/www/pub/templates/header.tpl"}
|
||
|
||
{* einbinden aus Template-Ressource namens 'db' *}
|
||
{include file="db:header.tpl"}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.include.php">
|
||
<title>include_php (PHP-Code einbinden)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>file</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der einzubindenden PHP-Datei.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>once</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>true</emphasis></entry>
|
||
<entry>Definiert ob die Datei mehrmals geladen werden soll, falls sie mehrmals eingebunden wird.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der Variable, der die Ausgabe von include_php zugewiesen wird.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
include_php-Tags werden verwendet, um PHP-Skripte in Ihre Templates
|
||
einzubinden. Falls 'Sicherheit' aktiviert ist,
|
||
muss das einzubindende Skript im '$trusted_dir' Pfad liegen.
|
||
'include_php' muss das Attribut 'file' übergeben werden,
|
||
das den Pfad - entweder relativ zu '$trusted_dir' oder absolut -
|
||
zum Skript enthält.
|
||
</para>
|
||
<para>
|
||
include_php ist ein einfacher Weg, um modularisierte Templates zu
|
||
verwenden und PHP-Code von HTML zu separieren. Sie haben zum Beispiel
|
||
ein Template für die Seitennavigation, welche direkt
|
||
aus der Datenbank bezogen wird. Die Logik, die den Datenbankinhalt bezieht,
|
||
können sie in einer eigenen Datei ablegen und am
|
||
Anfang Ihres Templates einbinden. Nun können Sie das Template
|
||
überall wiederverwenden, ohne sich Gedanken zu machen, wie der Inhalt
|
||
in die Navigationsstruktur gelangt.
|
||
</para>
|
||
<para>
|
||
Normalerweise wird ein PHP-Skript nur einmal pro Aufruf geladen,
|
||
selbst wenn es mehrfach eingebunden wird. Sie können dieses
|
||
Verhalten durch die Verwendung des <emphasis>once</emphasis> Attributs
|
||
steuern. Wenn Sie 'once' auf 'false' setzen, wird die Datei immer
|
||
wenn sie eingebunden wird auch neu geladen.
|
||
</para>
|
||
<para>
|
||
Optional kann das <emphasis>assign</emphasis> Attribut übergeben werden.
|
||
Die Ausgabe von <emphasis>include_php</emphasis> wird dann nicht direkt eingefügt,
|
||
sondern in der durch assign benannten Template-Variable abgelegt.
|
||
</para>
|
||
<para>
|
||
Das Objekt '$smarty' kann in dem eingebundenen PHP-Script über '$this' angesprochen werden.
|
||
</para>
|
||
<example>
|
||
<title>Funktion include_php</title>
|
||
<programlisting>
|
||
lade_nav.php
|
||
-------------
|
||
|
||
<?php
|
||
|
||
|
||
// lade die Variablen aus einer MySQL-Datenbank und weise sie dem Template zu
|
||
require_once("MySQL.class.php");
|
||
$sql = new MySQL;
|
||
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
|
||
$this->assign($sections,$sql->record);
|
||
|
||
?>
|
||
|
||
|
||
index.tpl
|
||
---------
|
||
|
||
|
||
{* absoluter Pfad, oder relativ zu '$trusted_dir' *}
|
||
{include_php file="/pfad/zu/lade_nav.php"}
|
||
|
||
{foreach item=$aktuelle_section from=$sections}
|
||
<a href="{$aktuelle_section.url}">{$aktuelle_section.name}</a><br>
|
||
{/foreach}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.insert">
|
||
<title>insert (einfügen)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der Insert-Funktion</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name der Template-Variable, in der die Ausgabe der 'insert'-Funktion optional abgelegt wird.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>script</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name des PHP-Skriptes, das vor Aufruf der 'insert'-Funktion eingebunden werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>[var ...]</entry>
|
||
<entry>[var typ]</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Variablen die der 'insert'-Funktion übergeben werden sollen.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'insert'-Tags funktionieren ähnlich den 'include'-Tags,
|
||
werden aber nicht gecached, falls <link linkend="caching">caching</link>
|
||
eingeschaltet ist. Sie werden bei jedem Aufruf des Templates ausgeführt.
|
||
</para>
|
||
<para>
|
||
Stellen Sie sich vor, sie hätten ein Template mit einem
|
||
Werbebanner. Dieser Banner kann verschiedene Arten von
|
||
Inhalten haben: Bilder, HTML, Flash, etc.
|
||
Deshalb können wir nicht einfach einen statischen Link
|
||
verwenden und müssen vermeiden, dass dieser Inhalt gecached wird.
|
||
Hier kommt das 'insert'-Tag ins Spiel. Das Template kennt die Variablen
|
||
'#banner_location_id#' und '#site_id#' (zum Beispiel aus einer Konfigurationsdatei)
|
||
und soll eine Funktion aufrufen, die den Inhalt des Banners liefert.
|
||
</para>
|
||
<example>
|
||
<title>Funktion 'insert'</title>
|
||
<programlisting>
|
||
|
||
{* erzeugen des Banners *}
|
||
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}</programlisting>
|
||
</example>
|
||
<para>
|
||
In diesem Beispiel verwenden wir die Funktion 'getBanner' und
|
||
übergeben die Parameter '#banner_location_id#' und '#site_id#'.
|
||
Smarty wird daraufhin in Ihrer Applikatiopn nach einer Funktion
|
||
namens 'getBanner' suchen und diese mit den Parametern '#banner_location_id#'
|
||
und '#site_id#' aufrufen. Allen 'insert'-Funktionen in Ihrer Applikation
|
||
muss 'insert_' vorangestellt werden, um Konflikte im Namensraum
|
||
zu vermeiden. Ihre 'insert_getBanner()'-Funktion sollte etwas mit den
|
||
übergebenen Parametern unternehmen und das Resultat zurückgeben.
|
||
Dieses Resultat wird an der Stelle des 'insert'-Tags in Ihrem Template ausgegeben.
|
||
In diesem Beispiel würde Smarty folgende Funktion aufrufen:
|
||
insert_getBanner(array("lid" => "12345","sid" => "67890")) und die erhaltenen Resultate
|
||
an Stelle des 'insert'-Tags ausgeben.
|
||
</para>
|
||
<para>
|
||
Falls Sie das 'assign'-Attribut übergeben, wird die Ausgabe
|
||
des 'insert'-Tags in dieser Variablen abgelegt.
|
||
Bemerkung: dies ist nicht sinnvoll, wenn Caching eingeschaltet ist.
|
||
</para>
|
||
<para>
|
||
Falls Sie das 'script'-Attribut übergeben, wird das angegebene
|
||
PHP-Skript vor der Ausführung der 'insert'-Funktion eingebunden.
|
||
Dies ist nützlich, um die 'insert'-Funktion erst in diesem
|
||
Skript zu definieren.
|
||
Der Pfad kann absolut oder relativ zu '$trusted_dir' angegeben werden.
|
||
Wenn Sicherheit eingeschaltet ist, muss das Skript in '$trusted_dir'
|
||
liegen.
|
||
</para>
|
||
<para>
|
||
Als zweites Argument wird der 'insert'-Funktion das Smarty-Objekt selbst
|
||
übergeben. Damit kann dort auf die Informationen im Smarty-Objekt
|
||
zugegriffen werden.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Es gibt die Möglichkeit, Teile des Templates nicht zu cachen.
|
||
Wenn Sie <link linkend="caching">caching</link> eingeschaltet haben,
|
||
werden 'insert'-Tags nicht gecached. Sie werden jedesmal ausgeführt, wenn
|
||
die Seite erstellt wird - selbst innerhalb gecachter Seiten. Dies funktioniert
|
||
gut für Dinge wie Werbung (Banner), Abstimmungen, Wetterberichte, Such-Resultate, Benutzer-Feedback-Ecke, etc.
|
||
</para>
|
||
</note>
|
||
</sect1>
|
||
<sect1 id="language.function.if">
|
||
<title>if,elseif,else</title>
|
||
<para>
|
||
'if'-Statements in Smarty erlauben die selbe Flexibilität
|
||
wie in PHP, bis auf ein paar Erweiterungen für die Template-Engine.
|
||
Jedes <emphasis>if</emphasis> muss mit einem <emphasis>/if</emphasis>
|
||
kombiniert sein. <emphasis>else</emphasis> und <emphasis>elseif</emphasis>
|
||
sind ebenfalls erlaubt. "eq", "ne","neq","gt", "lt", "lte", "le", "gte" "ge",
|
||
"is even","is odd", "is noteven","is not odd","not","mod","div by","even by",
|
||
"odd by","==","!=",">", "<","<=",">=" sind alles erlaubte Bedingungen,
|
||
und müssen von umgebenden Elementen mit Leerzeichen abgetrennt werden.
|
||
</para>
|
||
<example>
|
||
<title>if Anweisung</title>
|
||
<programlisting>
|
||
|
||
{* ein Beispiel mit 'eq' (gleich) *}
|
||
{if $name eq "Fred"}
|
||
Willkommen der Herr.
|
||
{elseif $name eq "Wilma"}
|
||
Willkommen die Dame.
|
||
{else}
|
||
Willkommen, was auch immer Du sein magst.
|
||
{/if}
|
||
|
||
{* ein Beispiel mit 'or'-Logik *}
|
||
{if $name eq "Fred" or $name eq "Wilma"}
|
||
...
|
||
{/if}
|
||
|
||
{* das selbe *}
|
||
{if $name == "Fred" || $name == "Wilma"}
|
||
...
|
||
{/if}
|
||
|
||
{* die foldende Syntax ist nicht korrekt, da die Elemente welche die
|
||
Bedingung umfassen nicht mit Leerzeichen abgetrennt sind*}
|
||
{if $name=="Fred" || $name=="Wilma"}
|
||
...
|
||
{/if}
|
||
|
||
|
||
|
||
{* Klammern sind erlaubt *}
|
||
{if ( $anzahl < 0 or $anzahl > 1000 ) and $menge >= #minMengeAmt#}
|
||
...
|
||
{/if}
|
||
|
||
|
||
{* einbetten von php Funktionsaufrufen ('gt' steht für 'grösser als') *}
|
||
{if count($var) gt 0}
|
||
...
|
||
{/if}
|
||
|
||
|
||
{* testen ob eine Zahl gerade (even) oder ungerade (odd) ist *}
|
||
{if $var is even}
|
||
...
|
||
{/if}
|
||
{if $var is odd}
|
||
...
|
||
{/if}
|
||
{if $var is not odd}
|
||
...
|
||
{/if}
|
||
|
||
|
||
{* testen ob eine Zahl durch 4 teilbar ist (div by) *}
|
||
{if $var is div by 4}
|
||
...
|
||
{/if}
|
||
|
||
|
||
{* testen ob eine Variable gerade ist, gruppiert nach 2
|
||
0=gerade, 1=gerade, 2=ungerade, 3=ungerade, 4=gerade, 5=gerade, etc *}
|
||
{if $var is even by 2}
|
||
...
|
||
{/if}
|
||
|
||
{* 0=gerade, 1=gerade, 2=gerade, 3=ungerade, 4=ungerade, 5=ungerade, etc *}
|
||
{if $var is even by 3}
|
||
...
|
||
{/if}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.ldelim">
|
||
<title>ldelim,rdelim (Ausgabe der Trennzeichen)</title>
|
||
<para>
|
||
ldelim und rdelim werden verwendet, um die Trennzeichen auszugeben -
|
||
in unserem Fall "{" oder "}" - ohne dass Smarty versucht, sie zu
|
||
interpretieren.
|
||
</para>
|
||
<example>
|
||
<title>ldelim, rdelim</title>
|
||
<programlisting>
|
||
|
||
{* gibt die konfigurierten Trennzeichen des Templates aus *}
|
||
|
||
{ldelim}funktionsname{rdelim} Funktionen sehen in Smarty so aus!
|
||
|
||
|
||
AUSGABE:
|
||
|
||
{funktionsname} Funktionen sehen in Smarty so aus!</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.literal">
|
||
<title>literal</title>
|
||
<para>
|
||
'literal'-Tags erlauben es, einen Block wörtlich auszugeben,
|
||
d.h. von der Interpretation durch Smarty auszuschliessen.
|
||
Dies ist vor allem für Javascript- oder andere Blöcke
|
||
nützlich, die geschwungene Klammern verwenden. Alles
|
||
was zwischen den {literal}{/literal} Tags steht, wird direkt
|
||
angezeigt.</para>
|
||
<example>
|
||
<title>literal-Tags</title>
|
||
<programlisting>
|
||
{literal}
|
||
<script language=javascript>
|
||
|
||
<!--
|
||
function isblank(field) {
|
||
if (field.value == '')
|
||
{ return false; }
|
||
else
|
||
{
|
||
document.loginform.submit();
|
||
return true;
|
||
}
|
||
}
|
||
// -->
|
||
|
||
</script>
|
||
{/literal}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.php">
|
||
<title>php</title>
|
||
<para>
|
||
'php'-Tags erlauben es, PHP-Code direkt in das Template einzubetten. Der Inhalt
|
||
wird nicht 'escaped', egal wie <link linkend="variable.php.handling">$php_handling</link>
|
||
konfiguriert ist.
|
||
Dieses Tag ist nur für erfahrene Benutzer gedacht und wird
|
||
auch von diesen normalerweise nicht benötigt.
|
||
</para>
|
||
<example>
|
||
<title>php-Tags</title>
|
||
<programlisting>
|
||
{php}
|
||
// php Skript direkt von Template einbinden
|
||
include("/pfad/zu/zeige_weather.php");
|
||
{/php}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.section">
|
||
<title>section,sectionelse</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der 'section'</entry>
|
||
</row>
|
||
<row>
|
||
<entry>loop</entry>
|
||
<entry>[$variable_name]</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name des Zählers für die Iterationen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>start</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>0</emphasis></entry>
|
||
<entry>
|
||
Definiert die Startposition. Falls ein negativer Wert übergeben wird,
|
||
berechnet sich die Startposition ausgehend vom Ende des Arrays. Wenn zum Beispiel
|
||
7 Werte in einem Array enthalten sind und die Startposition -2 ist, ist die
|
||
berechnete Startposition 5. Unerlaubte Werte (Werte ausserhalb der Grösse des
|
||
Arrays) werden automatisch auf den nächstmöglichen Wert gesetzt.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>step</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>1</emphasis></entry>
|
||
<entry>
|
||
Definiert die Schrittweite mit welcher das Array durchlaufen wird.
|
||
'step=2' iteriert durch 0, 2, 4, etc. Wenn ein negativer Wert übergeben wurde,
|
||
wird das Array rückwärts durchlaufen.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>max</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>1</emphasis></entry>
|
||
<entry>Maximale Anzahl an Iterationen, die Durchlaufen werden.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>show</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>true</emphasis></entry>
|
||
<entry>Definiert ob diese 'section' angezeigt werden soll oder nicht.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
Template-'sections' werden verwendet, um durch Arrays zu iterieren.
|
||
Jedes <emphasis>section</emphasis>-Tag muss mit einem <emphasis>/section</emphasis>-Tag
|
||
kombiniert werden. <emphasis>name</emphasis> und <emphasis>loop</emphasis> sind erforderliche
|
||
Parameter. Der Name der 'section' kann frei gewählt werden, muss jedoch aus Buchstaben,
|
||
Zahlen oder Unterstrichen bestehen. 'sections' können verschachtelt werden. Dabei ist
|
||
zu beachten, dass sich ihre Namen unterscheiden. Aus der 'loop'-Variable (normalerweise ein
|
||
Array von Werten) resultiert die Anzahl der Iterationen, die durchlaufen werden.
|
||
Wenn ein Wert aus der 'loop'-Variable innerhalb der 'section' ausgegeben werden soll,
|
||
muss der 'section-name' umschlossen mit [] angefügt werden.
|
||
<emphasis>sectionelse</emphasis> wird ausgeführt, wenn keine Werte in der
|
||
'loop'-Variable enthalten sind.
|
||
</para>
|
||
<example>
|
||
<title>section</title>
|
||
<programlisting>
|
||
|
||
|
||
{* dieses Beispiel gibt alle Werte des $KundenId Arrays aus *}
|
||
{section name=kunde loop=$KundenId}
|
||
id: {$KundenId[kunde]}<br>
|
||
{/section}
|
||
|
||
AUSGABE:
|
||
|
||
id: 1000<br>
|
||
id: 1001<br>
|
||
id: 1002<br></programlisting>
|
||
</example>
|
||
|
||
<example>
|
||
<title>section loop Variable</title>
|
||
<programlisting>
|
||
{* die 'loop'-Variable definiert nur die Anzahl der Iterationen,
|
||
Sie können in dieser 'section' auf jeden Wert des Templates
|
||
zugreifen. Dieses Beispiel geht davon aus, dass $KundenId, $Namen und
|
||
$Adressen Arrays sind, welche die selbe Anzahl Werte enthalten *}
|
||
{section name=kunde loop=$KundenId}
|
||
id: {$KundenId[kunde]}<br>
|
||
name: {$Namen[kunde]}<br>
|
||
address: {$Adressen[kunde]}<br>
|
||
<p>
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
id: 1000<br>
|
||
name: Peter Müller <br>
|
||
adresse: 253 N 45th<br>
|
||
<p>
|
||
id: 1001<br>
|
||
name: Fritz Muster<br>
|
||
adresse:: 417 Mulberry ln<br>
|
||
<p>
|
||
id: 1002<br>
|
||
name: Hans Meier<br>
|
||
adresse:: 5605 apple st<br>
|
||
<p></programlisting>
|
||
</example>
|
||
|
||
<example>
|
||
<title>section names</title>
|
||
<programlisting>
|
||
{* die 'name'-Variable definiert den Namen der verwendet werden soll,
|
||
um Daten aus dieser 'section' zu referenzieren *}
|
||
{section name=meinedaten loop=$KundenId}
|
||
id: {$KundenId[meinedaten]}<br>
|
||
name: {$Namen[meinedaten]}<br>
|
||
address: {$Adressen[meinedaten]}<br>
|
||
<p>
|
||
{/section}</programlisting>
|
||
</example>
|
||
|
||
<example>
|
||
<title>nested sections (verschachtelte 'sections')</title>
|
||
<programlisting>
|
||
{* Sections können unbegrenzt tief verschachtelt werden.
|
||
Mit verschachtelten 'sections' können Sie auf komplexe Datenstrukturen
|
||
zugreifen (wie zum Beispiel multidimensionale Arrays). Im folgenden Beispiel
|
||
ist $contact_type[customer] ein Array mit Kontakttypen des aktuellen Kunden. *}
|
||
{section name=customer loop=$custid}
|
||
id: {$custid[customer]}<br>
|
||
name: {$name[customer]}<br>
|
||
address: {$address[customer]}<br>
|
||
{section name=contact loop=$contact_type[customer]}
|
||
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br>
|
||
{/section}
|
||
<p>
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
id: 1000<br>
|
||
name: John Smith<br>
|
||
address: 253 N 45th<br>
|
||
home phone: 555-555-5555<br>
|
||
cell phone: 555-555-5555<br>
|
||
e-mail: john@mydomain.com<br>
|
||
<p>
|
||
id: 1001<br>
|
||
name: Jack Jones<br>
|
||
address: 417 Mulberry ln<br>
|
||
home phone: 555-555-5555<br>
|
||
cell phone: 555-555-5555<br>
|
||
e-mail: jack@mydomain.com<br>
|
||
<p>
|
||
id: 1002<br>
|
||
name: Jane Munson<br>
|
||
address: 5605 apple st<br>
|
||
home phone: 555-555-5555<br>
|
||
cell phone: 555-555-5555<br>
|
||
e-mail: jane@mydomain.com<br>
|
||
<p></programlisting>
|
||
</example>
|
||
|
||
<example>
|
||
<title>sections und assoziative Arrays</title>
|
||
<programlisting>
|
||
{* Dies ist ein Beispiel wie man einen assoziativen Array
|
||
in einer 'section' ausgeben kann.*}
|
||
{section name=customer loop=$contacts}
|
||
name: {$contacts[customer].name}<br>
|
||
home: {$contacts[customer].home}<br>
|
||
cell: {$contacts[customer].cell}<br>
|
||
e-mail: {$contacts[customer].email}<p>
|
||
{/section}
|
||
|
||
{* Anm. d. übersetzers: Oft ist die Anwendung von 'foreach' kürzer. *}
|
||
|
||
{foreach item=customer from=$contacts}
|
||
name: {$customer.name}<br>
|
||
home: {$customer.home}<br>
|
||
cell: {$customer.cell}<br>
|
||
e-mail: {$customer.email}<p>
|
||
{/foreach}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
name: John Smith<br>
|
||
home: 555-555-5555<br>
|
||
cell: 555-555-5555<br>
|
||
e-mail: john@mydomain.com<p>
|
||
name: Jack Jones<br>
|
||
home phone: 555-555-5555<br>
|
||
cell phone: 555-555-5555<br>
|
||
e-mail: jack@mydomain.com<p>
|
||
name: Jane Munson<br>
|
||
home phone: 555-555-5555<br>
|
||
cell phone: 555-555-5555<br>
|
||
e-mail: jane@mydomain.com<p></programlisting>
|
||
</example>
|
||
|
||
|
||
|
||
<example>
|
||
<title>sectionelse</title>
|
||
<programlisting>
|
||
{* sectionelse wird aufgerufen, wenn keine $custid Werte vorhanden sind *}
|
||
{section name=customer loop=$custid}
|
||
id: {$custid[customer]}<br>
|
||
{sectionelse}
|
||
keine Werte in $custid gefunden
|
||
{/section}</programlisting>
|
||
</example>
|
||
<para>
|
||
Die Eigenschaften der 'section' werden in besonderen Variablen abgelegt.
|
||
Diese sind wie folgt aufgebaut: {$smarty.section.sectionname.varname}
|
||
</para>
|
||
<para>
|
||
Bermerkung: Seit Smarty 1.5.0 hat sich die Syntax der 'section' Eigenschaften
|
||
von {%sectionname.varname%} zu {$smarty.section.sectionname.varname} geändert.
|
||
Die alte Syntax wird noch immer unterstützt, die Dokumentation erwähnt
|
||
jedoch nur noch die neue Schreibweise.
|
||
</para>
|
||
<sect2 id="section.property.index">
|
||
<title>index</title>
|
||
<para>
|
||
'index' wird verwendet, um den aktuellen Schleifen-Index anzuzeigen. Er startet
|
||
bei 0 (beziehungsweise der definierten Startposition) und inkrementiert in 1-er Schritten
|
||
(beziehungsweise der definierten Schrittgrösse).
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Wenn 'step' und 'start' nicht übergeben werden, verhält sich
|
||
der Wert wie die 'section'-Eigenschaft 'iteration', ausser dass
|
||
er bei 0 anstatt 1 beginnt.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'index'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
0 id: 1000<br>
|
||
1 id: 1001<br>
|
||
2 id: 1002<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.index.prev">
|
||
<title>index_prev</title>
|
||
<para>
|
||
'index_prev' wird verwendet um den vorhergehenden Schleifen-Index
|
||
auszugeben. Bei der ersten Iteration ist dieser Wert -1.
|
||
</para>
|
||
<example>
|
||
<title>section'-Eigenschaft 'index_prev'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *}
|
||
{if $custid[customer.index_prev] ne $custid[customer.index]}
|
||
Die Kundennummer hat sich geändert.<br>
|
||
{/if}
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
0 id: 1000<br>
|
||
Die Kundennummer hat sich geändert.<br>
|
||
1 id: 1001<br>
|
||
Die Kundennummer hat sich geändert.<br>
|
||
2 id: 1002<br>
|
||
Die Kundennummer hat sich geändert.<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.index.next">
|
||
<title>index_next</title>
|
||
<para>
|
||
'index_next' wird verwendet um den nächsten 'loop'-Index
|
||
auszugeben. Bei der letzten Iteration ist dieser Wert um 1 grösser
|
||
als der aktuelle 'loop'-Index (inklusive dem definierten 'step' Wert).
|
||
</para>
|
||
<example>
|
||
<title>section'-Eigenschaft 'index_next'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *}
|
||
{if $custid[customer.index_next] ne $custid[customer.index]}
|
||
Die Kundennummer wird sich ändern.<br>
|
||
{/if}
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
0 id: 1000<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
1 id: 1001<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
2 id: 1002<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.iteration">
|
||
<title>iteration</title>
|
||
<para>
|
||
'iteration' wird verwendet um die aktuelle Iteration auszugeben.
|
||
</para>
|
||
<para>
|
||
Bemerkung: Die Eigenschaften 'start', 'step' und 'max' beeinflussen 'iteration'
|
||
nicht, die Eigenschaft 'index' jedoch schon. 'iteration' startet im gegensatz
|
||
zu 'index' bei 1. 'rownum' ist ein Alias für 'iteration' und arbeitet identisch.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'iteration'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid start=5 step=2}
|
||
aktuelle loop iteration: {$smarty.section.customer.iteration}<br>
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das gleiche *}
|
||
{if $custid[customer.index_next] ne $custid[customer.index]}
|
||
Die Kundennummer wird sich ändern.<br>
|
||
{/if}
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
aktuelle loop iteration: 1
|
||
5 id: 1000<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
aktuelle loop iteration: 2
|
||
7 id: 1001<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
aktuelle loop iteration: 3
|
||
9 id: 1002<br>
|
||
Die Kundennummer wird sich ändern.<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.first">
|
||
<title>first</title>
|
||
<para>
|
||
|
||
'first' ist 'true', wenn die aktuelle Iteration die erste dieser 'section' ist.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'first'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{if $smarty.section.customer.first}
|
||
<table>
|
||
{/if}
|
||
|
||
<tr><td>{$smarty.section.customer.index} id:
|
||
{$custid[customer]}</td></tr>
|
||
|
||
{if $smarty.section.customer.last}
|
||
</table>
|
||
{/if}
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
<table>
|
||
<tr><td>0 id: 1000</td></tr>
|
||
<tr><td>1 id: 1001</td></tr>
|
||
<tr><td>2 id: 1002</td></tr>
|
||
</table>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.last">
|
||
<title>last</title>
|
||
<para>
|
||
|
||
'last' ist 'true' wenn die aktuelle Iteration die letzte dieser 'section' ist.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'last'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{if $smarty.section.customer.first}
|
||
<table>
|
||
{/if}
|
||
|
||
<tr><td>{$smarty.section.customer.index} id:
|
||
{$custid[customer]}</td></tr>
|
||
|
||
{if $smarty.section.customer.last}
|
||
</table>
|
||
{/if}
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
<table>
|
||
<tr><td>0 id: 1000</td></tr>
|
||
<tr><td>1 id: 1001</td></tr>
|
||
<tr><td>2 id: 1002</td></tr>
|
||
</table>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.rownum">
|
||
<title>rownum</title>
|
||
<para>
|
||
'rownum' wird verwendet um die aktuelle Iteration (startend bei 1) auszugeben.
|
||
'rownum' ist ein Alias für 'iteration' und arbeitet identisch.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'rownum'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{$smarty.section.customer.rownum} id: {$custid[customer]}<br>
|
||
{/section}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
1 id: 1000<br>
|
||
2 id: 1001<br>
|
||
3 id: 1002<br>
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.loop">
|
||
<title>loop</title>
|
||
<para>
|
||
'loop' wird verwendet, um die Nummer letzte Iteration der 'section' auszugeben.
|
||
Dieser Wert kann inner- und ausserhalb der 'section' verwendet werden.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'loop'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid}
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{/section}
|
||
|
||
Es wurden {$smarty.section.customer.loop} Kunden angezeigt.
|
||
|
||
AUSGABE:
|
||
|
||
0 id: 1000<br>
|
||
1 id: 1001<br>
|
||
2 id: 1002<br>
|
||
|
||
Es wurden 3 Kunden angezeigt.
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.show">
|
||
<title>show</title>
|
||
<para>
|
||
<emphasis>show</emphasis> kann die Werte 'true' oder 'false' haben.
|
||
Falls der Wert 'true' ist, wird die 'section' angezeigt. Falls
|
||
der Wert 'false' ist, wird die 'section' - ausser dem 'sectionelse' - nicht ausgegeben.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'show'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid show=$show_customer_info}
|
||
{$smarty.section.customer.rownum} id: {$custid[customer]}<br>
|
||
{/section}
|
||
|
||
{if $smarty.section.customer.show}
|
||
die 'section' wurde angezeigt
|
||
{else}
|
||
die 'section' wurde nicht angezeigt
|
||
{/if}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
1 id: 1000<br>
|
||
2 id: 1001<br>
|
||
3 id: 1002<br>
|
||
|
||
die 'section' wurde angezeigt
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
<sect2 id="section.property.total">
|
||
<title>total</title>
|
||
<para>
|
||
Wird verwendet um die Anzahl der durchlaufenen Iterationen einer
|
||
'section' auszugeben. Kann innerhalb oder ausserhalb der 'section' verwendet
|
||
werden.
|
||
</para>
|
||
<example>
|
||
<title>'section'-Eigenschaft 'total'</title>
|
||
<programlisting>
|
||
{section name=customer loop=$custid step=2}
|
||
{$smarty.section.customer.index} id: {$custid[customer]}<br>
|
||
{/section}
|
||
|
||
Es wurden {$smarty.section.customer.total} Kunden angezeigt.
|
||
|
||
OUTPUT:
|
||
|
||
0 id: 1000<br>
|
||
2 id: 1001<br>
|
||
4 id: 1002<br>
|
||
|
||
Es wurden 3 Kunden angezeigt.
|
||
</programlisting>
|
||
</example>
|
||
</sect2>
|
||
</sect1>
|
||
<sect1 id="language.function.strip">
|
||
<title>strip</title>
|
||
<para>
|
||
Webdesigner haben oft das Problem, dass Leerzeichen und Zeilenumbrüche
|
||
die Ausgabe des erzeugten HTML im Browser beeinflussen. Oft werden deshalb alle
|
||
Tags aufeinanderfolgend im Template notiert, was aber zu einer schlechten
|
||
Lesbarkeit führt.
|
||
</para>
|
||
<para>
|
||
Aus dem Inhalt zwischen den {strip}{/strip}-Tags werden alle Leerzeichen und
|
||
Zeilenumbrüche entfernt. So können Sie Ihre Templates lesbar
|
||
halten, ohne sich Sorgen um die Leerzeichen zu machen.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
{strip}{/strip} ändert nicht den Inhalt einer Template-Variablen.
|
||
Dafür gibt es den <link linkend="language.modifier.strip">strip Modifikator</link>.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>strip tags</title>
|
||
<programlisting>
|
||
|
||
{* der folgende Inhalt wird in einer Zeile ausgegeben *}
|
||
{strip}
|
||
<table border=0>
|
||
<tr>
|
||
<td>
|
||
<A HREF="{$url}">
|
||
<font color="red">Das ist ein Test.</font>
|
||
</A>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
{/strip}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
<table border=0><tr><td><A HREF="http://my.domain.com"><font color="red">Das ist ein Test.</font></A></td></tr></table></programlisting>
|
||
</example>
|
||
<para>
|
||
Achtung: im obigen Beispiel beginnen und enden alle Zeilen mit HTML-Tags.
|
||
Falls Sie Abschnitte haben, die nur Text enthalten, werden diese ebenfalls
|
||
zusammengeschlossen. Das kann zu unerwünschten Resultaten führen.
|
||
</para>
|
||
</sect1>
|
||
</chapter>
|
||
|
||
<chapter id="language.custom.functions">
|
||
<title>Eigene Funktionen</title>
|
||
<para>
|
||
Smarty wird mit verschiedenen massgeschneiderten Funktionen geliefert, welche Sie in
|
||
Ihren Templates verwenden können.
|
||
</para>
|
||
<sect1 id="language.function.assign">
|
||
<title>assign (zuweisen)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>var</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der zuzuweisenden Variable.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>value</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der zuzuweisende Wert.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'assign' wird verwendet um einer Template-Variable einen Wert zuzuweisen.
|
||
</para>
|
||
<example>
|
||
<title>assign (zuweisen)</title>
|
||
<programlisting>
|
||
{assign var="name" value="Bob"}
|
||
|
||
Der Wert von $name ist {$name}.
|
||
|
||
AUSGABE:
|
||
|
||
Der Wert von $name ist Bob.</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.counter">
|
||
<title>counter (Zähler)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>default</emphasis></entry>
|
||
<entry>Der Name des Zählers.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>start</entry>
|
||
<entry>number</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>1</emphasis></entry>
|
||
<entry>Der Initialwert.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>skip</entry>
|
||
<entry>number</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>1</emphasis></entry>
|
||
<entry>Der Interval.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>direction</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>up</emphasis></entry>
|
||
<entry>Die Richtung (up/down).</entry>
|
||
</row>
|
||
<row>
|
||
<entry>print</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>true</emphasis></entry>
|
||
<entry>Definiert ob der Wert ausgegeben werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Template-Variable welcher der Wert zugewiesen werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'counter' wird verwendet um eine Zahlenreihe auszugeben. Sie können
|
||
den Initialwert bestimmen, den Zählinterval, die Richtung in der
|
||
gezählt werden soll und ob der Wert ausgegeben wird. Sie können
|
||
mehrere Zähler gleichzeitig laufen lassen, in dem Sie ihnen einmalige
|
||
Namen geben. Wenn Sie keinen Wert für 'name' übergeben, wird 'default'
|
||
verwendet.
|
||
</para>
|
||
<para>
|
||
Wenn Sie das spezielle 'assign'-Attribut verwenden, wird die Ausgabe des Zählers
|
||
dieser Template-Variable zugewiesen anstatt ausgegeben zu werden.
|
||
</para>
|
||
<example>
|
||
<title>counter (Zähler)</title>
|
||
<programlisting>
|
||
|
||
{* initialisieren *}
|
||
{counter start=0 skip=2 print=false}
|
||
|
||
{counter}<br>
|
||
{counter}<br>
|
||
{counter}<br>
|
||
{counter}<br>
|
||
|
||
AUSGABE:
|
||
|
||
2<br>
|
||
4<br>
|
||
6<br>
|
||
8<br></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.cycle">
|
||
<title>cycle (Zyklus)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>default</emphasis></entry>
|
||
<entry>Der Name des Zyklus.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>values</entry>
|
||
<entry>mixed</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>N/A</emphasis></entry>
|
||
<entry>
|
||
Die Werte durch die zirkuliert werden soll, entweder als
|
||
Komma separierte Liste (siehe 'delimiter'-Attribut), oder
|
||
als Array.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>print</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>true</emphasis></entry>
|
||
<entry>Definiert ob die Werte ausgegeben werden sollen oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>advance</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>true</emphasis></entry>
|
||
<entry>Definiert ob der nächste Wert automatisch angesprungen werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>delimiter</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>,</emphasis></entry>
|
||
<entry>Das zu verwendende Trennzeichen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der Name der Template-Variable welcher die Ausgabe zugewiesen werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'cycle' wird verwendet um durch ein Set von Werten zu zirkulieren.
|
||
Dies vereinfacht die Handhabung von zwei oder mehr Farben in einer
|
||
Tabelle, oder um einen Array zu durchlaufen.
|
||
</para>
|
||
<para>
|
||
Sie können durch mehrere Sets gleichzeitig iterieren, indem
|
||
Sie den Sets einmalige Namen geben.
|
||
</para>
|
||
<para>
|
||
Um den aktuellen Wert nicht auszugeben, kann das 'print' Attribut auf
|
||
'false' gesetzt werden. Dies könnte sinnvoll sein, wenn man einen
|
||
einzelnen Wert überspringen möchte.
|
||
</para>
|
||
<para>
|
||
Das 'advance'-Attribut wird verwendet um einen Wert zu wiederholen.
|
||
Wenn auf 'true' gesetzt, wird bei der nächsten Iteration der selbe
|
||
Wert erneut ausgegeben.
|
||
</para>
|
||
<para>
|
||
Wenn sie das spezielle 'assign'-Attribut übergeben, wird die Ausgabe
|
||
der 'cycle'-Funktion in dieser Template-Variable abgelegt, anstatt ausgegeben zu werden.
|
||
</para>
|
||
<example>
|
||
<title>cycle (Zyklus)</title>
|
||
<programlisting>
|
||
|
||
{* initialisieren *}
|
||
{section name=rows loop=$data}
|
||
<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}">
|
||
<td>{$data[rows]}</td>
|
||
</tr>
|
||
{/section}
|
||
|
||
AUSGABE:
|
||
<tr bgcolor="#eeeeee">
|
||
<td>1</td>
|
||
</tr>
|
||
<tr bgcolor="#d0d0d0">
|
||
<td>2</td>
|
||
</tr>
|
||
<tr bgcolor="#eeeeee">
|
||
<td>3</td>
|
||
</tr>
|
||
</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.debug">
|
||
<title>debug</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>output</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>html</emphasis></entry>
|
||
<entry>Ausgabe-Typ, entweder HTML oder Javascript.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
{debug} zeigt die 'debugging'-Konsole auf der Seite an. <link linkend="chapter.debugging.console">$debug</link>
|
||
hat darauf keinen Einfluss. Da die Ausgabe zur Laufzeit geschieht, können die Template-Namen hier
|
||
nicht ausgegeben werden. Sie erhalten jedoch eine Liste aller zugewiesenen Variablen und deren Werten.
|
||
</para>
|
||
</sect1>
|
||
<sect1 id="language.function.eval">
|
||
<title>eval (auswerten)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>var</entry>
|
||
<entry>mixed</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Variable oder Zeichenkette die ausgewertet werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Template-Variable welcher die Ausgabe zugewiesen werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'eval' wird verwendet um eine Variable als Template auszuwerten. Dies kann
|
||
verwendet werden um Template-Tags/Variablen in einer Variable oder
|
||
einer Konfigurationsdatei abzulegen.
|
||
</para>
|
||
<para>
|
||
Wenn Sie das spezielle 'assign'-Attribut übergeben, wird die Ausgabe
|
||
von 'eval' in dieser Template-Variable gespeichert und nicht ausgegeben.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Evaluierte Variablen werden gleich wie Template-Variablen verwendet
|
||
und folgen den selben Maskierungs- und Sicherheits-Features.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Evaluierte Variablen werden bei jedem Aufruf neu ausgewertet. Die kompilierten
|
||
Versionen werden dabei nicht abgelegt! Falls sie caching eingeschaltet haben, wird
|
||
die Ausgabe jedoch mit dem Rest des Templates gecached.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>eval (auswerten)</title>
|
||
<programlisting>
|
||
setup.conf
|
||
----------
|
||
|
||
emphstart = <b>
|
||
emphend = </b>
|
||
title = Willkommen auf {$company}'s home page!
|
||
ErrorCity = Bitte geben Sie einen {#emphstart#}Stadtnamen{#emphend#} ein.
|
||
ErrorState = Bitte geben Sie einen {#emphstart#}Provinznamen{#emphend#} ein.
|
||
|
||
|
||
index.tpl
|
||
---------
|
||
|
||
{config_load file="setup.conf"}
|
||
|
||
{eval var=$foo}
|
||
{eval var=#title#}
|
||
{eval var=#ErrorCity#}
|
||
{eval var=#ErrorState# assign="state_error"}
|
||
{$state_error}
|
||
|
||
AUSGABE:
|
||
|
||
Dies ist der Inhalt von foo:
|
||
|
||
Willkommen auf Pub & Grill's home page!
|
||
Bitte geben Sie einen <b>Stadtnamen</b> ein.
|
||
Bitte geben Sie einen <b>Provinznamen</b> ein.
|
||
|
||
</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.fetch">
|
||
<title>fetch</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>file</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Datei, FTP oder HTTP Seite die geliefert werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Template-Variable welcher die Ausgabe zugewiesen werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'fetch' wird verwendet um lokale oder via HTTP beziehungsweise FTP verfügbare Inhalte
|
||
auszugeben. Wenn der Dateiname mit 'http://' anfängt, wird die angegebene
|
||
Webseite geladen und angezeigt. Wenn der Dateiname mit 'ftp://' anfängt
|
||
wird die Datei vom FTP-Server geladen und angezeigt. Für lokale Dateien
|
||
muss der absolute Pfad, oder ein Pfad relativ zum ausgeführten Skript übergeben werden.
|
||
</para>
|
||
<para>
|
||
Wenn Sie das spezielle 'assign'-Attribut übergeben, wird die Ausgabe
|
||
der 'fetch'-Funktion dieser Template-Variable zugewiesen, anstatt ausgegeben
|
||
zu werden (seit Smarty 1.5.0).
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
HTTP-Redirects werden nicht unterstützt, stellen Sie sicher,
|
||
dass die aufgerufene URL falls nötig durch ein '/'-Zeichen (slash) beendet wird.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Wenn Sicherheit eingeschaltet ist, und Dateien vom lokalen System
|
||
geladen werden sollen, ist dies nur für Dateien erlaubt welche
|
||
sich in einem definierten sicheren Verzeichnis befinden. ($secure_dir)
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>fetch</title>
|
||
<programlisting>
|
||
|
||
{* einbinden von javascript *}
|
||
{fetch file="/export/httpd/www.domain.com/docs/navbar.js"}
|
||
|
||
|
||
{* Wetter Informationen aus einer anderen Webseite bei uns anzeigen *}
|
||
{fetch file="http://www.myweather.com/68502/"}
|
||
|
||
|
||
{* News Datei via FTP auslesen *}
|
||
{fetch file="ftp://user:password@ftp.domain.com/path/to/currentheadlines.txt"}
|
||
|
||
|
||
{* die Ausgabe einer Template variable zuweisen *}
|
||
{fetch file="http://www.myweather.com/68502/" assign="weather"}
|
||
{if $weather ne ""}
|
||
<b>{$weather}</b>
|
||
{/if}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.checkboxes">
|
||
<title>html_checkboxes</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>checkbox</emphasis></entry>
|
||
<entry>Name der checkbox-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>werte</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser wenn das option-Attribut verwendet wird</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Ein Array mit Werten für die checkbox-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ausgabe</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser wenn das option-Attribut verwendet wird</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Ein Array mit Ausgaben/Namen für die checkbox-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>checked</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Das ausgewählte option-Element</entry>
|
||
</row>
|
||
<row>
|
||
<entry>options</entry>
|
||
<entry>associative array</entry>
|
||
<entry>Ja, ausser wert/ausgabe wird verwendet</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Assoziatives Array mit Wert/Ausgabe Paaren</entry>
|
||
</row>
|
||
<row>
|
||
<entry>separator</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Zeichenkette die zwischen den checkboxes ausgegeben werden soll</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
html_checkboxes generiert HTML-Checkboxes mit den Übergebenen Werten.
|
||
Kümmert sich auch darum welches option-Element ausgewählt sein soll.
|
||
Erforderliche Attribute sind Werte/Ausgabe ausser wenn options verwendet wird.
|
||
Die Ausgabe ist XHTML kompatibel.
|
||
</para>
|
||
<para>
|
||
Alle weiteren Parameter, die in der obigen Liste nicht erwähnt werden,
|
||
werden als <input>-Tags ausgegeben.
|
||
</para>
|
||
<example>
|
||
<title>html_checkboxes</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
|
||
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
|
||
Johnson','CHarlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
|
||
index.tpl:
|
||
|
||
{html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"}
|
||
|
||
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_checkboxes', array(
|
||
1001 => 'Joe Schmoe',
|
||
1002 => 'Jack Smith',
|
||
1003 => 'Jane Johnson','Carlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
{html_checkboxes name="id" checkboxes=$cust_checkboxes checked=$customer_id separator="<br />"}
|
||
|
||
|
||
AUSGABE: (Beide Beispiele)
|
||
|
||
<input type="checkbox" name="id[]" value="1000">Joe Schmoe<br />
|
||
<input type="checkbox" name="id[]" value="1001" checked="checked"><br />
|
||
<input type="checkbox" name="id[]" value="1002">Jane Johnson<br />
|
||
<input type="checkbox" name="id[]" value="1003">Charlie Brown<br /></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.image">
|
||
<title>html_image</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>file</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Name/Pfad zum Bild</entry>
|
||
</row>
|
||
<row>
|
||
<entry>border</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>0</emphasis></entry>
|
||
<entry>Grösse des Rahmens</entry>
|
||
</row>
|
||
<row>
|
||
<entry>height</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>Bildhöhe</emphasis></entry>
|
||
<entry>Darstellungshöhe</entry>
|
||
</row>
|
||
<row>
|
||
<entry>width</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>Bildbreite</emphasis></entry>
|
||
<entry>Darstellungsbreite</entry>
|
||
</row>
|
||
<row>
|
||
<entry>basedir</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>DocumentRoot des Webservers</emphasis></entry>
|
||
<entry>Verzeichnis auf das relative Pfade aufgebaut werden sollen</entry>
|
||
</row>
|
||
<row>
|
||
<entry>link</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>href-Ziel auf das das Bild verweisen soll</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'html_image' generiert ein HTML-Tag f¨r ein Bild. Höhe und Breite
|
||
werden berechnet falls sie nicht ¨bergeben werden.
|
||
</para>
|
||
<para>
|
||
'basedir' definiert das Verzeichnis auf welchen relative Pfade aufgebaut
|
||
werden sollen. Falls nicht ¨bergeben, wird die Umgebungsvariable
|
||
DOCUMENT_ROOT verwendet. Wenn Sicherheit eingeschaltet ist, muss der
|
||
Pfad in einem sicheren Verzeichnis sein.
|
||
</para>
|
||
<para>
|
||
Wenn 'link' übergeben wird, wird um das Bild ein <a href="LINKVALUE"><a>
|
||
Tag eingefühgt.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
'html_image' verursacht Festplattenzugriffe um die Breite/Höhe des Bildes
|
||
zu berechnen. Falls Sie kein 'caching' einsetzen, ist es zu empfehlen, 'html_image'
|
||
nicht zu verwenden, und stattdessen statische image Tags zu verwenden.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>html_image</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
{image file="pumpkin.jpg"}
|
||
{image file="/pfad/aus/docroot/pumpkin.jpg"}
|
||
{image file="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg"}
|
||
|
||
AUSGABE: (möglich)
|
||
|
||
<img src="pumpkin.jpg" border="0" width="44" height="68">
|
||
<img src="/pfad/aus/docroot/pumpkin.jpg" border="0" width="44" height="68">
|
||
<img src="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg" border="0" width="44" height="68"></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.options">
|
||
<title>html_options (Ausgabe von HTML-Options)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>values</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser 'options'-Attribut wird verwendet.</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Array mit Werten für die dropdown-Liste.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>output</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser 'options'-Attribut wird verwendet.</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Arrays mit Namen für die dropdown-Liste.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>selected</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Das ausgewählte Option Element.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>options</entry>
|
||
<entry>associative array</entry>
|
||
<entry>Ja, ausser wenn das 'values'- und das 'output'-Attribut verwendet werden.</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Assoziatives Array mit Werten die ausgegeben werden sollen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Name der select-Gruppe</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'html_options' wird verwendet um HTML-Options Listen mit den übergebenen Daten
|
||
zu erzeugen. Die Funktion kümmert sich ebenfalls um das setzen des ausgewählten
|
||
Standardwertes. Die Attribute 'values' und 'output' sind erforderlich,
|
||
ausser man verwendet das Attribut 'options'.
|
||
</para>
|
||
<para>
|
||
Wenn ein Wert als Array erkannt wird,
|
||
wird er als HTML-OPTGROUP ausgegeben und die Werte werden in Gruppen dargestellt.
|
||
Rekursion wird unterstützt. Die Ausgabe ist XHTML kompatibel.
|
||
</para>
|
||
<para>
|
||
Wenn das optionale <emphasis>name</emphasis> Attribut übergeben wird,
|
||
umschliesst ein <select name="groupname"></select> Tag die 'options'-Liste.
|
||
Sonst wird nur die 'options'-Liste generiert.
|
||
</para>
|
||
<para>
|
||
All parameters that are not in the list above are printed as
|
||
name/value-pairs inside the <select>-tag. They are ignored if
|
||
the optional <emphasis>name</emphasis> is not given.
|
||
Alle weiteren Parameter werden innerhalb des <select>-Tags
|
||
als wert/ausgabe-Paare übergeben. Falls <emphasis>name</emphasis>
|
||
nicht übergeben wird, werden die Werte ignoriert.
|
||
</para>
|
||
<example>
|
||
<title>html_options</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
|
||
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane
|
||
Johnson','Carlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
<select name=customer_id>
|
||
{html_options values=$cust_ids selected=$customer_id output=$cust_names}
|
||
</select>
|
||
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_options', array(
|
||
1001 => 'Joe Schmoe',
|
||
1002 => 'Jack Smith',
|
||
1003 => 'Jane Johnson',
|
||
1004 => 'Charlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
<select name=customer_id>
|
||
{html_options options=$cust_options selected=$customer_id}
|
||
</select>
|
||
|
||
|
||
AUSGABE (beide Beispiele):
|
||
|
||
<select name=customer_id>
|
||
<option value="1000">Joe Schmoe</option>
|
||
<option value="1001" selected="selected">Jack Smith</option>
|
||
<option value="1002">Jane Johnson</option>
|
||
<option value="1003">Charlie Brown</option>
|
||
</select></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.radios">
|
||
<title>html_radios</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>name</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>radio</emphasis></entry>
|
||
<entry>name der radio-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>values</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser wenn das 'options'-Attribut verwendet wird</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Ein Array mit Werten für die radio-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>output</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja, ausser wenn das 'options'-Attribut verwendet wird</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Ein Array mit Namen für die radio-Liste</entry>
|
||
</row>
|
||
<row>
|
||
<entry>checked</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Das ausgewählte checkbox-Element</entry>
|
||
</row>
|
||
<row>
|
||
<entry>options</entry>
|
||
<entry>associative array</entry>
|
||
<entry>Ja, ausser wenn die Attribute 'values' und 'output' verwendet werden</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Ein assoziatves Array mit wert/ausgabe Paaren</entry>
|
||
</row>
|
||
<row>
|
||
<entry>separator</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Zeichenkette die zwischen den radio-Elementen eingefügt werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'html_radios' generiert eine Liste mit radio-Elementen aus den übergebenen Daten.
|
||
Es kümmert sich ebenfalls darum, welches Element ausgewählt sein soll. Erforderliche
|
||
Attribute sind 'values'/'output', ausser wenn 'options' verwendet wird. Die Ausgabe ist XHTML kompatibel.
|
||
</para>
|
||
<para>
|
||
Alle weiteren Parameter werden als <input>-Tags ausgegeben.
|
||
</para>
|
||
<example>
|
||
<title>html_radios</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_ids', array(1000,1001,1002,1003));
|
||
$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Carlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
|
||
index.tpl:
|
||
|
||
{html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"}
|
||
|
||
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('cust_radios', array(
|
||
1001 => 'Joe Schmoe',
|
||
1002 => 'Jack Smith',
|
||
1003 => 'Jane Johnson',
|
||
1004 => 'Charlie Brown'));
|
||
$smarty->assign('customer_id', 1001);
|
||
$smarty->display('index.tpl');
|
||
|
||
|
||
index.tpl:
|
||
|
||
{html_radios name="id" radios=$cust_radios checked=$customer_id separator="<br />"}
|
||
|
||
|
||
AUSGABE: (beide Beispiele)
|
||
|
||
<input type="radio" name="id[]" value="1000">Joe Schmoe<br />
|
||
<input type="radio" name="id[]" value="1001" checked="checked"><br />
|
||
<input type="radio" name="id[]" value="1002">Jane Johnson<br />
|
||
<input type="radio" name="id[]" value="1003">Charlie Brown<br /></programlisting>
|
||
</example>
|
||
</sect1>
|
||
|
||
|
||
<sect1 id="language.function.html.select.date">
|
||
<title>html_select_date (Ausgabe von Daten als HTML-'options')</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>prefix</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>Date_</entry>
|
||
<entry>Prefix für die Namen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>time</entry>
|
||
<entry>timestamp/YYYY-MM-DD</entry>
|
||
<entry>Nein</entry>
|
||
<entry>Aktuelle Zeit als Unix-Timestamp, oder in YYYY-MM-DD format.</entry>
|
||
<entry>Das zu verwendende Datum.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>start_year</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>aktuelles Jahr</entry>
|
||
<entry>Das erste Jahr in der dropdown-Liste, entweder als Jahreszahl oder relativ zum aktuellen Jahr (+/- N).</entry>
|
||
</row>
|
||
<row>
|
||
<entry>end_year</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>Gegenteil von start_year</entry>
|
||
<entry>Das letzte Jahr in der dropdown-Liste, entweder als Jahreszahl oder relativ zum aktuellen Jahr (+/- N).</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_days</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Tage ausgegeben sollen oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_months</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Monate ausgegeben werden sollen oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_years</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Jahre ausgegeben werden sollen oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>month_format</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>%B</entry>
|
||
<entry>Format in welchem der Monat ausgegeben werden soll. (strftime)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>day_format</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>%02d</entry>
|
||
<entry>Definiert das Format in welchem der Tag ausgegeben werden soll. (sprintf)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>year_as_text</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>false</entry>
|
||
<entry>Definiert ob das Jahr als Text ausgegeben werden soll oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>reverse_years</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>false</entry>
|
||
<entry>Definiert ob die Daten in verkehrter Reihenfolge ausgegeben werden sollen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>field_array</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>
|
||
Wenn ein Namen übergeben wird, werden die Daten in der Form name[Day], name[Year], name[Month] an PHP zurückgegeben.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>day_size</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem 'select'-Tag das Attribut 'size' hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>month_size</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem 'select'-Tag das Attribut 'size' hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>year_size</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem 'select'-Tag das Attribut 'size' hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>all_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt allen 'select'-Tags zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>day_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt 'select'-Tags zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>month_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt 'select'-Tags zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>year_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt 'select'-Tags zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>field_order</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>MDY</entry>
|
||
<entry>Die Reihenfolge in der die Felder ausgegeben werden.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>field_separator</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>\n</entry>
|
||
<entry>Zeichenkette die zwischen den Feldern ausgegeben werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>month_value_format</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>%m</entry>
|
||
<entry>Format zur Ausgabe der Monats-Werte, Standardwert ist %m. (strftime)</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'html_select_date' wird verwendet um Datums-Dropdown-Listen zu erzeugen,
|
||
und kann einen oder alle der folgenden Werte darstellen: Jahr, Monat und Tag
|
||
</para>
|
||
<example>
|
||
<title>html_select_date</title>
|
||
<programlisting>
|
||
{html_select_date}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
<select name="Date_Month">
|
||
<option value="1">January</option>
|
||
<option value="2">February</option>
|
||
<option value="3">March</option>
|
||
<option value="4">April</option>
|
||
<option value="5">May</option>
|
||
<option value="6">June</option>
|
||
<option value="7">July</option>
|
||
<option value="8">August</option>
|
||
<option value="9">September</option>
|
||
<option value="10">October</option>
|
||
<option value="11">November</option>
|
||
<option value="12" selected>December</option>
|
||
</select>
|
||
<select name="Date_Day">
|
||
<option value="1">01</option>
|
||
<option value="2">02</option>
|
||
<option value="3">03</option>
|
||
<option value="4">04</option>
|
||
<option value="5">05</option>
|
||
<option value="6">06</option>
|
||
<option value="7">07</option>
|
||
<option value="8">08</option>
|
||
<option value="9">09</option>
|
||
<option value="10">10</option>
|
||
<option value="11">11</option>
|
||
<option value="12">12</option>
|
||
<option value="13" selected>13</option>
|
||
<option value="14">14</option>
|
||
<option value="15">15</option>
|
||
<option value="16">16</option>
|
||
<option value="17">17</option>
|
||
<option value="18">18</option>
|
||
<option value="19">19</option>
|
||
<option value="20">20</option>
|
||
<option value="21">21</option>
|
||
<option value="22">22</option>
|
||
<option value="23">23</option>
|
||
<option value="24">24</option>
|
||
<option value="25">25</option>
|
||
<option value="26">26</option>
|
||
<option value="27">27</option>
|
||
<option value="28">28</option>
|
||
<option value="29">29</option>
|
||
<option value="30">30</option>
|
||
<option value="31">31</option>
|
||
</select>
|
||
<select name="Date_Year">
|
||
<option value="2001" selected>2001</option>
|
||
</select></programlisting>
|
||
</example>
|
||
|
||
|
||
<example>
|
||
<title>html_select_date</title>
|
||
<programlisting>
|
||
|
||
|
||
{* Start- und End-Jahr können relativ zum aktuellen Jahr definiert werden. *}
|
||
{html_select_date prefix="StartDate" time=$time start_year="-5" end_year="+1" display_days=false}
|
||
|
||
AUSGABE: (aktuelles Jahr ist 2000)
|
||
|
||
<select name="StartDateMonth">
|
||
<option value="1">January</option>
|
||
<option value="2">February</option>
|
||
<option value="3">March</option>
|
||
<option value="4">April</option>
|
||
<option value="5">May</option>
|
||
<option value="6">June</option>
|
||
<option value="7">July</option>
|
||
<option value="8">August</option>
|
||
<option value="9">September</option>
|
||
<option value="10">October</option>
|
||
<option value="11">November</option>
|
||
<option value="12" selected>December</option>
|
||
</select>
|
||
<select name="StartDateYear">
|
||
<option value="1999">1995</option>
|
||
<option value="1999">1996</option>
|
||
<option value="1999">1997</option>
|
||
<option value="1999">1998</option>
|
||
<option value="1999">1999</option>
|
||
<option value="2000" selected>2000</option>
|
||
<option value="2001">2001</option>
|
||
</select></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.select.time">
|
||
<title>html_select_time (Ausgabe von Zeiten als HTML-'options')</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>prefix</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>Time_</entry>
|
||
<entry>Prefix des Namens.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>time</entry>
|
||
<entry>timestamp</entry>
|
||
<entry>Nein</entry>
|
||
<entry>Aktuelle Uhrzeit.</entry>
|
||
<entry>Definiert die zu verwendende Uhrzeit.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_hours</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Stunden ausgegeben werden sollen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_minutes</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Minuten ausgegeben werden sollen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_seconds</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob Sekunden ausgegeben werden sollen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>display_meridian</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob der Meridian (am/pm) ausgegeben werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>use_24_hours</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry>true</entry>
|
||
<entry>Definiert ob die Stunden in 24-Stunden Format angezeigt werden sollen oder nicht.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>minute_interval</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry>1</entry>
|
||
<entry>Definiert den Interval in der Minuten-Dropdown-Liste.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>second_interval</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry>1</entry>
|
||
<entry>Definiert den Interval in der Sekunden-Dropdown-Liste.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>field_array</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>n/a</entry>
|
||
<entry>Gibt die Daten in einen Array dieses Namens aus.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>all_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt allen 'select'-Tags zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>hour_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem Stunden-'select'-Tag zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>minute_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem Minuten-'select'-Tag zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>second_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem Sekunden-'select'-Tag zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>meridian_extra</entry>
|
||
<entry>string</entry>
|
||
<entry>No</entry>
|
||
<entry>null</entry>
|
||
<entry>Fügt dem Meridian-'select'-Tag zusätzliche Attribute hinzu.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'html_select_time' wird verwendet um Zeit-Dropdown-Listen zu erzeugen.
|
||
Die Funktion kann alle oder eines der folgenden Felder ausgeben: Stunde, Minute, Sekunde und Meridian.
|
||
</para>
|
||
<example>
|
||
<title>html_select_time</title>
|
||
<programlisting>
|
||
{html_select_time use_24_hours=true}
|
||
|
||
|
||
AUSGABE:
|
||
|
||
<select name="Time_Hour">
|
||
<option value="00">00</option>
|
||
<option value="01">01</option>
|
||
<option value="02">02</option>
|
||
<option value="03">03</option>
|
||
<option value="04">04</option>
|
||
<option value="05">05</option>
|
||
<option value="06">06</option>
|
||
<option value="07">07</option>
|
||
<option value="08">08</option>
|
||
<option value="09" selected>09</option>
|
||
<option value="10">10</option>
|
||
<option value="11">11</option>
|
||
<option value="12">12</option>
|
||
<option value="13">13</option>
|
||
<option value="14">14</option>
|
||
<option value="15">15</option>
|
||
<option value="16">16</option>
|
||
<option value="17">17</option>
|
||
<option value="18">18</option>
|
||
<option value="19">19</option>
|
||
<option value="20">20</option>
|
||
<option value="21">21</option>
|
||
<option value="22">22</option>
|
||
<option value="23">23</option>
|
||
</select>
|
||
<select name="Time_Minute">
|
||
<option value="00">00</option>
|
||
<option value="01">01</option>
|
||
<option value="02">02</option>
|
||
<option value="03">03</option>
|
||
<option value="04">04</option>
|
||
<option value="05">05</option>
|
||
<option value="06">06</option>
|
||
<option value="07">07</option>
|
||
<option value="08">08</option>
|
||
<option value="09">09</option>
|
||
<option value="10">10</option>
|
||
<option value="11">11</option>
|
||
<option value="12">12</option>
|
||
<option value="13">13</option>
|
||
<option value="14">14</option>
|
||
<option value="15">15</option>
|
||
<option value="16">16</option>
|
||
<option value="17">17</option>
|
||
<option value="18">18</option>
|
||
<option value="19">19</option>
|
||
<option value="20" selected>20</option>
|
||
<option value="21">21</option>
|
||
<option value="22">22</option>
|
||
<option value="23">23</option>
|
||
<option value="24">24</option>
|
||
<option value="25">25</option>
|
||
<option value="26">26</option>
|
||
<option value="27">27</option>
|
||
<option value="28">28</option>
|
||
<option value="29">29</option>
|
||
<option value="30">30</option>
|
||
<option value="31">31</option>
|
||
<option value="32">32</option>
|
||
<option value="33">33</option>
|
||
<option value="34">34</option>
|
||
<option value="35">35</option>
|
||
<option value="36">36</option>
|
||
<option value="37">37</option>
|
||
<option value="38">38</option>
|
||
<option value="39">39</option>
|
||
<option value="40">40</option>
|
||
<option value="41">41</option>
|
||
<option value="42">42</option>
|
||
<option value="43">43</option>
|
||
<option value="44">44</option>
|
||
<option value="45">45</option>
|
||
<option value="46">46</option>
|
||
<option value="47">47</option>
|
||
<option value="48">48</option>
|
||
<option value="49">49</option>
|
||
<option value="50">50</option>
|
||
<option value="51">51</option>
|
||
<option value="52">52</option>
|
||
<option value="53">53</option>
|
||
<option value="54">54</option>
|
||
<option value="55">55</option>
|
||
<option value="56">56</option>
|
||
<option value="57">57</option>
|
||
<option value="58">58</option>
|
||
<option value="59">59</option>
|
||
</select>
|
||
<select name="Time_Second">
|
||
<option value="00">00</option>
|
||
<option value="01">01</option>
|
||
<option value="02">02</option>
|
||
<option value="03">03</option>
|
||
<option value="04">04</option>
|
||
<option value="05">05</option>
|
||
<option value="06">06</option>
|
||
<option value="07">07</option>
|
||
<option value="08">08</option>
|
||
<option value="09">09</option>
|
||
<option value="10">10</option>
|
||
<option value="11">11</option>
|
||
<option value="12">12</option>
|
||
<option value="13">13</option>
|
||
<option value="14">14</option>
|
||
<option value="15">15</option>
|
||
<option value="16">16</option>
|
||
<option value="17">17</option>
|
||
<option value="18">18</option>
|
||
<option value="19">19</option>
|
||
<option value="20">20</option>
|
||
<option value="21">21</option>
|
||
<option value="22">22</option>
|
||
<option value="23" selected>23</option>
|
||
<option value="24">24</option>
|
||
<option value="25">25</option>
|
||
<option value="26">26</option>
|
||
<option value="27">27</option>
|
||
<option value="28">28</option>
|
||
<option value="29">29</option>
|
||
<option value="30">30</option>
|
||
<option value="31">31</option>
|
||
<option value="32">32</option>
|
||
<option value="33">33</option>
|
||
<option value="34">34</option>
|
||
<option value="35">35</option>
|
||
<option value="36">36</option>
|
||
<option value="37">37</option>
|
||
<option value="38">38</option>
|
||
<option value="39">39</option>
|
||
<option value="40">40</option>
|
||
<option value="41">41</option>
|
||
<option value="42">42</option>
|
||
<option value="43">43</option>
|
||
<option value="44">44</option>
|
||
<option value="45">45</option>
|
||
<option value="46">46</option>
|
||
<option value="47">47</option>
|
||
<option value="48">48</option>
|
||
<option value="49">49</option>
|
||
<option value="50">50</option>
|
||
<option value="51">51</option>
|
||
<option value="52">52</option>
|
||
<option value="53">53</option>
|
||
<option value="54">54</option>
|
||
<option value="55">55</option>
|
||
<option value="56">56</option>
|
||
<option value="57">57</option>
|
||
<option value="58">58</option>
|
||
<option value="59">59</option>
|
||
</select>
|
||
<select name="Time_Meridian">
|
||
<option value="am" selected>AM</option>
|
||
<option value="pm">PM</option>
|
||
</select></programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.html.table">
|
||
<title>html_table</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>loop</entry>
|
||
<entry>array</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Array mit den Daten durch die gelooped werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>cols</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>3</emphasis></entry>
|
||
<entry>Anzahl Spalten in der Tabelle</entry>
|
||
</row>
|
||
<row>
|
||
<entry>table_attr</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>border="1"</emphasis></entry>
|
||
<entry>Attribute für table-Tag</entry>
|
||
</row>
|
||
<row>
|
||
<entry>tr_attr</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Attribute für tr-Tags (Arrays werden durchlaufen)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>td_attr</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>empty</emphasis></entry>
|
||
<entry>Attribute für td-Tags (Arrays werden durchlaufen)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>trailpad</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>&nbsp;</emphasis></entry>
|
||
<entry>Werte um leere Zellen auszufüllen</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
<emphasis>html_table</emphasis> generiert eine Tabelle aus dem
|
||
übergebenen Array. Das <emphasis>cols</emphasis> Attribut
|
||
definiert die Anzahl Spalten die generiert werden sollen. <emphasis>table_attr</emphasis>, <emphasis>tr_attr</emphasis>
|
||
und <emphasis>td_attr</emphasis> definiert die Werte die den entsprechenden HTML-Tags als Attribute angehängt werden.
|
||
Wenn <emphasis>tr_attr</emphasis> oder <emphasis>td_attr</emphasis> Arrays sind, werden diese durchlaufen.
|
||
<emphasis>trailpad</emphasis> definiert den Wert der in leere Zellen eingefügt werden soll.
|
||
</para>
|
||
<example>
|
||
<title>html_table</title>
|
||
<programlisting>
|
||
index.php:
|
||
|
||
require('Smarty.php.class');
|
||
$smarty = new Smarty;
|
||
$smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
|
||
$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"'));
|
||
$smarty->display('index.tpl');
|
||
|
||
index.tpl:
|
||
|
||
{html_table loop=$data}
|
||
{html_table loop=$data cols=4 table_attrs='border="0"'}
|
||
{html_table loop=$data cols=4 tr_attrs=$tr}
|
||
|
||
AUSGABE:
|
||
|
||
<table border="1">
|
||
<tr><td>1</td><td>2</td><td>3</td></tr>
|
||
<tr><td>4</td><td>5</td><td>6</td></tr>
|
||
<tr><td>7</td><td>8</td><td>9</td></tr>
|
||
</table>
|
||
<table border="0">
|
||
<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr>
|
||
<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr>
|
||
<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
|
||
</table>
|
||
<table border="1">
|
||
<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr>
|
||
<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr>
|
||
<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>
|
||
</table></programlisting>
|
||
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.math">
|
||
<title>math (Mathematik)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>equation</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Der auszuführende Vergleich.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>format</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Format der Ausgabe. (sprintf)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>var</entry>
|
||
<entry>numeric</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Wert der Vergleichsvariable.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Template-Variable welcher die Ausgabe zugewiesen werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>[var ...]</entry>
|
||
<entry>numeric</entry>
|
||
<entry>Yes</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Zusätzliche Werte.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'math' ermöglicht es dem Designer, mathematische Gleichungen
|
||
durchzuführen. Alle numerischen Template-Variablen
|
||
können dazu verwendet werden und die Ausgabe wird an
|
||
die Stelle des Tags geschrieben. Die Variablen werden
|
||
der Funktion als Parameter übergeben, dabei kann es sich
|
||
um statische oder um Template-Variablen handeln. Erlaubte Operatoren
|
||
umfassen: +, -, /, *, abs, ceil, cos, exp, floor, log, log10, max,
|
||
min, pi, pow, rand, round, sin, sqrt, srans und tan. Konsultieren Sie
|
||
die PHP-Dokumentation für zusätzliche Informationen zu dieser
|
||
Funktion.
|
||
</para>
|
||
<para>
|
||
Falls Sie die spezielle 'assign' Variable übergeben, wird die
|
||
Ausgabe der 'math'-Funktion der Template-Variablen mit dem selben
|
||
Namen zugewiesen anstatt ausgegeben zu werden.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Die 'math'-Funktion ist wegen ihres Gebrauchs der 'eval()'-Funktion
|
||
äusserst Ressourcen intensiv. Mathematik direkt im PHP-Skript
|
||
zu verwenden ist wesentlich performanter. Sie sollten daher
|
||
- wann immer möglich - auf die Verwendung verzichten. Stellen
|
||
Sie jedoch auf jeden Fall sicher, dass Sie keine 'math'-Tags in 'sections'
|
||
oder anderen 'loop'-Konstrukten verwenden.
|
||
</para>
|
||
</note>
|
||
<example>
|
||
<title>math (Mathematik)</title>
|
||
<programlisting>
|
||
{* $height=4, $width=5 *}
|
||
|
||
{math equation="x + y" x=$height y=$width}
|
||
|
||
AUSGABE:
|
||
|
||
9
|
||
|
||
|
||
{* $row_height = 10, $row_width = 20, #col_div# = 2, aus Template zugewiesen *}
|
||
|
||
{math equation="height * width / division"
|
||
height=$row_height
|
||
width=$row_width
|
||
division=#col_div#}
|
||
|
||
AUSGABE:
|
||
|
||
100
|
||
|
||
|
||
|
||
{* Sie können auch Klammern verwenden *}
|
||
|
||
{math equation="(( x + y ) / z )" x=2 y=10 z=2}
|
||
|
||
AUSGABE:
|
||
|
||
6
|
||
|
||
|
||
|
||
{* Sie können als Ausgabeformat alle von sprintf unterstötzen Definitionen verwenden *}
|
||
|
||
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
|
||
|
||
AUSGABE:
|
||
|
||
9.44</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.popup.init">
|
||
<title>popup_init (Popup Initialisieren)</title>
|
||
<para>
|
||
'popup' ist eine Integration von 'overLib', einer Javascript
|
||
Library für 'popup'-Fenster. Dies kann verwendet werden um
|
||
Zusatzinformationen als Context-Menu oder Tooltip auszugeben.
|
||
'popup_init' muss am Anfang jedes Templates aufgerufen werden,
|
||
falls Sie planen darin die <link linkend="language.function.popup">popup</link>-Funktion
|
||
zu verwenden. Der Author von 'overLib' ist Erik Bosrup, und die
|
||
Homepage ist unter http://www.bosrup.com/web/overlib/ erreichbar.
|
||
</para>
|
||
<para>
|
||
Seit Smarty 2.1.2 wird 'overLib' NICHT mehr mitgeliefert. Laden
|
||
Sie 'overLib' herunter und platzieren Sie es in Ihrer Document Root.
|
||
Danach können Sie mit dem Attribut 'src' definieren an welcher
|
||
Stelle die Datei liegt.
|
||
</para>
|
||
<example>
|
||
<title>popup_init</title>
|
||
<programlisting>
|
||
|
||
{* 'popup_init' muss einmalig am Anfang der Seite aufgerufen werden *}
|
||
{popup_init src="/javascripts/overlib.js"}</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.popup">
|
||
<title>popup (Popup-Inhalt definieren)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>text</entry>
|
||
<entry>string</entry>
|
||
<entry>Ja</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Text/HTML der im Popup ausgegeben werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>trigger</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>onMouseOver</emphasis></entry>
|
||
<entry>Definiert bei welchem Event das Popup aufgerufen werden soll. Erlaubte Werte sind: onMouseOver und onClick</entry>
|
||
</row>
|
||
<row>
|
||
<entry>sticky</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Definiert ob das Popup geöffnet bleiben soll bis es manuell geschlossen wird.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>caption</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert die Überschrift.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>fgcolor</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Hintergrundfarbe des Popups.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>bgcolor</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Rahmenfarbe des Popups.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>textcolor</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Farbe des Textes im Popup.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>capcolor</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Farbe der Popup-Überschrift.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>closecolor</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Farbe des 'close'-Textes.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>textfont</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Farbe des Textes.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>captionfont</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Schriftart für die Überschrift.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>closefont</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Schriftart für den 'close'-Text.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>textsize</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Schriftgrösse des Textes.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>captionsize</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Schriftgrösse der Überschrift.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>closesize</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Schriftgrösse des 'close'-Textes.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>width</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Breite der Popup-Box.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>height</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Höhe der Popup-Box.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>left</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Öffnet die Popup-Box links von Mauszeiger.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>right</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Öffnet die Popup-Box rechts von Mauszeiger.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>center</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Öffnet die Popup-Box in der Mitte des Mauszeigers.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>above</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Öffnet die Popup-Box oberhalb des Mauszeigers. Achtung: nur möglich wenn 'height' definiert ist.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>below</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Öffnet die Popup-Box unterhalb des Mauszeigers.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>border</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Rahmenbreite der Popup-Box.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>offsetx</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Horizontale Distanz zum Mauszeiger bei der das Popup geöffnet bleibt.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>offsety</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Vertikale Distanz zum Mauszeiger bei der das Popup geöffnet bleibt.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>fgbackground</entry>
|
||
<entry>url to image</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Das Hintergundbild.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>bgbackground</entry>
|
||
<entry>url to image</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>
|
||
Definiert das Bild welches verwendet werden soll um den Rahmen zu zeichnen.
|
||
Achtung: Sie müssen 'bgcolor' auf '' setzen, da die Farbe sonst angezeigt wird.
|
||
Achtung: Wenn sie einen 'close'-Link verwenden, wird Netscape (4.x) die Zellen
|
||
mehrfach rendern, was zu einer falschen Anzeige führen kann.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>closetext</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert den Text des 'close'-Links.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>noclose</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Zeigt den 'close'-Link nicht an.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>status</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert den Text der in der Browser-Statuszeile ausgegeben wird.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>autostatus</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Gibt als Statusinformationen den Popup-Text aus. Achtung: Dies überschreibt die definierten Statuswerte.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>autostatuscap</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Zeigt in der Statusleiste den Wert der Popup-Überschrift an. Achtung: Dies überschreibt die definierten Statuswerte.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>inarray</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>
|
||
Weist 'overLib' an, den Wert aus dem in 'overlib.js' definierten Array 'ol_text' zu lesen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>caparray</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Weist 'overLib' an, die Überschrift aus dem in 'overlib.js' definierten Array 'ol_caps' zu lesen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>capicon</entry>
|
||
<entry>url</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Zeigt das übergebene Bild vor der Überschrift an.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>snapx</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Aliniert das Popup an einem horizontalen Gitter.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>snapy</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Aliniert das Popup an einem vertikalen Gitter.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>fixx</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Fixiert das Popup an der definierten horizontalen Position. Achtung: überschreibt alle anderen horizontalen Positionen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>fixy</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Fixiert das Popup an der definierten vertikalen Position. Achtung: überschreibt alle anderen vertikalen Positionen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>background</entry>
|
||
<entry>url</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Definiert das Hintergrundbild welches anstelle des Tabellenhintergrundes verwendet werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>padx</entry>
|
||
<entry>integer,integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Erzeugt horizontale Leerzeichen, um den Text platzieren zu können. Achtung: Dies ist eine 2-Parameter Funktion.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>pady</entry>
|
||
<entry>integer,integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Erzeugt vertikale Leerzeichen, um den Text platzieren zu können. Achtung: Dies ist eine 2-Parameter Funktion.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>fullhtml</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Lässt Sie den HTML-Code betreffend einem Hintergrundbild komplett kontrollieren.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>frame</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Kontrolliert Popups in einem anderen Frame. Sehen sie die 'overLib'-Seite für zusätzliche Informationen zu dieser Funktion.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>timeout</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Führt die übergebene Javascript-Funktion aus, und verwendet deren Ausgabe als Text für das Popup.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>delay</entry>
|
||
<entry>integer</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Macht, dass sich das Popup wie ein Tooltip verhält, und nach den definierten Millisekunden verschwindet.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>hauto</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Lässt 'overLib' automatisch definieren an welcher Seite (links/rechts) des Mauszeigers das Popup ausgegeben werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>vauto</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Lässt 'overLib' automatisch definieren an welcher Seite (oben/unten) des Mauszeigers das Popup ausgegeben werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'popup' wird verwendet um Javascript-Popup-Fenster zu erzeugen.
|
||
</para>
|
||
<example>
|
||
<title>popup</title>
|
||
<programlisting>
|
||
|
||
{* 'popup_init' muss am Anfang jeder Seite aufgerufen werden die 'popup' verwendet *}
|
||
{popup_init src="/javascripts/overlib.js"}
|
||
|
||
{* create a link with a popup window when you move your mouse over *}
|
||
{* ein link mit einem Popup welches geöffnet wird wenn die Maus über dem Link ist. *}
|
||
<A href="mypage.html" {popup text="This link takes you to my page!"}>mypage</A>
|
||
|
||
|
||
{* Sie können in einem Popup text, html, links und weiteres verwenden *}
|
||
<A href="mypage.html" {popup sticky=true caption="mypage contents"
|
||
text="<UL><LI>links<LI>pages<LI>images</UL>" snapx=10 snapy=10}>mypage</A>
|
||
|
||
AUSGABE:
|
||
|
||
|
||
(Für Beispiele können Sie sich die Smarty Homepage anschauen.)</programlisting>
|
||
</example>
|
||
</sect1>
|
||
<sect1 id="language.function.textformat">
|
||
<title>textformat (Textformatierung)</title>
|
||
<informaltable frame=all>
|
||
<tgroup cols=5>
|
||
<colspec colname=param align=center>
|
||
<colspec colname=type align=center>
|
||
<colspec colname=required align=center>
|
||
<colspec colname=default align=center>
|
||
<colspec colname=desc>
|
||
<thead>
|
||
<row>
|
||
<entry>Attribut Name</entry>
|
||
<entry>Typ</entry>
|
||
<entry>Erforderlich</entry>
|
||
<entry>Standardwert</entry>
|
||
<entry>Beschreibung</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>style</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>aktueller Stil</entry>
|
||
</row>
|
||
<row>
|
||
<entry>indent</entry>
|
||
<entry>number</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>0</emphasis></entry>
|
||
<entry>Anzahl Zeichen die für das einrücken von Zeilen verwendet werden.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>indent_first</entry>
|
||
<entry>number</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>0</emphasis></entry>
|
||
<entry>Anzahl Zeichen die für das Einrücken der ersten Zeile verwendet werden.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>indent_char</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>(single space)</emphasis></entry>
|
||
<entry>Das Zeichen welches zum Einrücken verwendet werden soll.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>wrap</entry>
|
||
<entry>number</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>80</emphasis></entry>
|
||
<entry>Maximale Zeilenlänge bevor die Zeile umgebrochen wird.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>wrap_char</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>\n</emphasis></entry>
|
||
<entry>Das für Zeilenumbrüche zu verwendende Zeichen.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>wrap_cut</entry>
|
||
<entry>boolean</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>false</emphasis></entry>
|
||
<entry>Wenn auf 'true' gesetzt, wird die Zeile an der definierten Position abgeschnitten.</entry>
|
||
</row>
|
||
<row>
|
||
<entry>assign</entry>
|
||
<entry>string</entry>
|
||
<entry>Nein</entry>
|
||
<entry><emphasis>n/a</emphasis></entry>
|
||
<entry>Die Template-Variable welcher die Ausgabe zugewiesen werden soll.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
<para>
|
||
'textformat' ist eine Funktion um Text zu formatieren. Die Funktion
|
||
entfernt überflüssige Leerzeichen und formatiert Paragrafen
|
||
indem sie die Zeilen einrückt und umbricht.
|
||
</para>
|
||
<para>
|
||
Sie können entweder den aktuellen Stil verwenden, oder ihn anhand
|
||
der Parameter selber definieren. Im Moment ist 'email' der einzig verfügbare Stil.
|
||
</para>
|
||
<example>
|
||
<title>textformat (Text Formatierung)</title>
|
||
<programlisting>
|
||
{textformat wrap=40}
|
||
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
|
||
{/textformat}
|
||
|
||
AUSGABE:
|
||
|
||
This is foo. This is foo. This is foo.
|
||
This is foo. This is foo. This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo. bar foo bar foo
|
||
foo. bar foo bar foo foo. bar foo bar
|
||
foo foo. bar foo bar foo foo. bar foo
|
||
bar foo foo. bar foo bar foo foo.
|
||
|
||
|
||
{textformat wrap=40 indent=4}
|
||
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
|
||
{/textformat}
|
||
|
||
AUSGABE:
|
||
|
||
This is foo. This is foo. This is
|
||
foo. This is foo. This is foo. This
|
||
is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo. bar foo bar foo
|
||
foo. bar foo bar foo foo. bar foo
|
||
bar foo foo. bar foo bar foo foo.
|
||
bar foo bar foo foo. bar foo bar
|
||
foo foo.
|
||
|
||
{textformat wrap=40 indent=4 indent_first=4}
|
||
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
|
||
{/textformat}
|
||
|
||
AUSGABE:
|
||
|
||
This is foo. This is foo. This
|
||
is foo. This is foo. This is foo.
|
||
This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo. bar foo bar
|
||
foo foo. bar foo bar foo foo. bar
|
||
foo bar foo foo. bar foo bar foo
|
||
foo. bar foo bar foo foo. bar foo
|
||
bar foo foo.
|
||
|
||
{textformat style="email"}
|
||
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
This is foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
bar foo bar foo foo.
|
||
|
||
{/textformat}
|
||
|
||
AUSGABE:
|
||
|
||
This is foo. This is foo. This is foo. This is foo. This is foo. This is
|
||
foo.
|
||
|
||
This is bar.
|
||
|
||
bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo
|
||
bar foo foo. bar foo bar foo foo. bar foo bar foo foo. bar foo bar foo
|
||
foo.
|
||
|
||
</programlisting>
|
||
</example>
|
||
</sect1>
|
||
</chapter>
|
||
|
||
<chapter id="config.files">
|
||
<title>Konfigurationsdateien</title>
|
||
<para>
|
||
Konfigurationsdateien sind ein praktischer Weg um Template-Variablen
|
||
aus einer gemeinsamen Datei zu lesen. Ein Beispiel sind die Template-Farben.
|
||
Wenn Sie die Farben einer Applikation anpassen wollen, müssen Sie normalerweise
|
||
alle Templates durcharbeiten, und die entsprechenden Werte ändern.
|
||
Mit einer Konfigurationsdatei können Sie alle Definitionen in einer
|
||
einzigen Datei vornehmen, und somit auch einfach ändern.
|
||
</para>
|
||
<example>
|
||
<title>Beispiel der Konfigurationsdatei-Syntax</title>
|
||
<programlisting>
|
||
# global variables
|
||
pageTitle = "Main Menu"
|
||
bodyBgColor = #000000
|
||
tableBgColor = #000000
|
||
rowBgColor = #00ff00
|
||
|
||
[Customer]
|
||
pageTitle = "Customer Info"
|
||
|
||
[Login]
|
||
pageTitle = "Login"
|
||
focus = "username"
|
||
Intro = """Diese Zeile erstreckt sich über
|
||
mehrere Zeilen, und muss deswegen
|
||
mit dreifachen Anführungszeichen
|
||
umschlossen werden."""
|
||
|
||
# hidden section
|
||
[.Database]
|
||
host=my.domain.com
|
||
db=ADDRESSBOOK
|
||
user=php-user
|
||
pass=foobar</programlisting>
|
||
</example>
|
||
<para>
|
||
Die Werte in einer Konfigurationsdatei können in einfachen/doppelten Anführungszeichen
|
||
notiert werden. Falls Sie einen Wert haben der sich über mehrere Zeilen ausbreitet muss dieser
|
||
Wert in dreifachen Anführungszeichen (""") eingebettet werden. Die Kommentar-Syntax kann frei
|
||
gewählt werden, solange sie nicht der normalen Syntax entsprechen. Wir empfehlen die
|
||
Verwendung von <literal>#</literal> (Raute) am Anfang jeder Kommentar-Zeile.
|
||
</para>
|
||
<para>
|
||
Dieses Beispiel hat 2 'sections'. 'section'-Namen werden von []-Zeichen umschlossen
|
||
und können alle Zeichen ausser <literal>[</literal> und <literal>]</literal> enthalten.
|
||
Die vier Variablen welche am Anfang der Datei definiert werden sind globale Variablen. Diese
|
||
Variablen werden immer geladen. Wenn eine definierte 'section' geladen wird, werden also
|
||
die globalen Variablen ebenfalls eingelesen. Wenn eine Variable sowohl global als auch
|
||
in einer 'section' vorkommt, wird die 'section'-Variable verwendet. Wenn zwei Variablen
|
||
in der gleichen 'section' den selben Namen aufweisen wird die Letztere verwendet.
|
||
</para>
|
||
<para>
|
||
Konfigurationsdateien werden mit <command>config_load</command> geladen.
|
||
</para>
|
||
<para>
|
||
Sie können Variablen oder auch ganze 'sections' verstecken indem
|
||
Sie dem Namen ein '.' voranstellen. Dies ist besonders wertvoll wenn
|
||
Ihre Applikation sensitive Informationen aus der Konfigurationsdatei liest
|
||
welche von der Template-Engine nicht verwendet werden. Falls eine Drittpartei
|
||
eine Änderung an der Konfigurationsdatei vornimmt können Sie so
|
||
sicherstellen, dass die sensitiven Daten nicht in deren Template geladen
|
||
werden können.
|
||
</para>
|
||
</chapter>
|
||
|
||
<chapter id="chapter.debugging.console">
|
||
<title>Debugging Konsole</title>
|
||
<para>
|
||
Smarty wird mit einer eingebauten Debugging Konsole ausgeliefert. Diese
|
||
Konsole informiert über die im aufgerufenen Template eingebundenen
|
||
Templates, die zugewiesenen Variablen und die Konfigurations-Variablen.
|
||
Die Formatierung der Konsole wird über das Template 'debug.tpl'
|
||
gesteuert. Um debugging zu aktivieren, setzten Sie '$debugging' auf 'true'
|
||
und (falls nötig) übergeben in '$debug_tpl' den Pfad zum 'debug.tpl'
|
||
Template (normalerweise SMARTY_DIR). Wenn Sie danach eine Seite laden,
|
||
sollte ein Javascript-Fenster geöffnet werden in welchem Sie alle
|
||
Informationen zur aufgerufenen Seite finden. Falls Sie die Variablen
|
||
eines bestimmten Templates ausgeben wollen, können Sie dazu die
|
||
Funktion <link linkend="language.function.debug">{debug}</link> verwenden.
|
||
Um debugging auszuschalten, können Sie '$debugging' auf 'false' setzen.
|
||
Sie können debugging auch temporär aktivieren, in dem Sie der
|
||
aufgerufenen URL SMARTY_DEBUG mit übergeben, dies muss jedoch zuerst mit
|
||
<link linkend="variable.debugging.ctrl">$debugging_ctrl</link> aktiviert werden.
|
||
</para>
|
||
<note>
|
||
<title>Technische Bemerkung</title>
|
||
<para>
|
||
Die Debugging Konsole funktioniert nicht für Daten die via 'fetch()' geladen
|
||
wurden, sondern nur für Daten die via 'display()' ausgegeben werden. Die Konsole
|
||
besteht aus ein paar Zeilen Javascript welche am Ende jeder Seite eingefügt werden.
|
||
Wenn Sie Javascript nicht mögen, können Sie die Ausgabe in 'debug.tpl' selbst
|
||
definieren. Debug-Ausgaben werden nicht gecached und Informationen zu 'debug.tpl'
|
||
selbst werden nicht ausgegeben.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
Die Ladezeiten werden in Sekunden, oder Bruchteilen davon, angegeben.
|
||
</para>
|
||
</note>
|
||
</chapter>
|
||
</part>
|