sync with en

This commit is contained in:
messju
2005-06-24 09:02:38 +00:00
parent 25ec77ca15
commit 4d7485f489
6 changed files with 1023 additions and 728 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.5 Maintainer: andreas Status: ready -->
<sect1 id="language.function.insert"> <sect1 id="language.function.insert">
<title>insert (einf&uuml;gen)</title> <title>insert (einf<EFBFBD>gen)</title>
<informaltable frame="all"> <informaltable frame="all">
<tgroup cols="5"> <tgroup cols="5">
<colspec colname="param" align="center" /> <colspec colname="param" align="center" />
@@ -46,74 +46,81 @@
<entry>[var typ]</entry> <entry>[var typ]</entry>
<entry>Nein</entry> <entry>Nein</entry>
<entry><emphasis>n/a</emphasis></entry> <entry><emphasis>n/a</emphasis></entry>
<entry>Variablen die der 'insert'-Funktion &uuml;bergeben werden sollen.</entry> <entry>Variablen die der 'insert'-Funktion <EFBFBD>bergeben werden sollen.</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
</informaltable> </informaltable>
<para> <para>
'insert'-Tags funktionieren &auml;hnlich den 'include'-Tags, {insert}-Tags funktionieren <EFBFBD>hnlich den <link
werden aber nicht gecached, falls <link linkend="caching">caching</link> linkend="language.function.include">{include}</link>-Tags, werden
eingeschaltet ist. Sie werden bei jedem Aufruf des Templates ausgef&uuml;hrt. aber nicht gecached, falls <link linkend="caching">caching</link>
eingeschaltet ist. Sie werden bei jedem Aufruf des Templates
ausgef<65>hrt.
</para> </para>
<para> <para>
Stellen Sie sich vor, sie h&auml;tten ein Template mit einem Stellen Sie sich vor, sie h<EFBFBD>tten ein Template mit einem
Werbebanner. Dieser Banner kann verschiedene Arten von Werbebanner. Dieser Banner kann verschiedene Arten von Inhalten
Inhalten haben: Bilder, HTML, Flash, etc. haben: Bilder, HTML, Flash, etc. Deshalb k<>nnen wir nicht einfach
Deshalb k&ouml;nnen wir nicht einfach einen statischen Link einen statischen Link verwenden und m<>ssen vermeiden, dass dieser
verwenden und m&uuml;ssen vermeiden, dass dieser Inhalt gecached wird. Inhalt gecached wird. Hier kommt das {insert}-Tag ins Spiel. Das
Hier kommt das 'insert'-Tag ins Spiel. Das Template kennt die Variablen Template kennt die Variablen '#banner_location_id#' und '#site_id#'
'#banner_location_id#' und '#site_id#' (zum Beispiel aus einer Konfigurationsdatei) (zum Beispiel aus einer <link
und soll eine Funktion aufrufen, die den Inhalt des Banners liefert. linkend="config.files">Konfigurationsdatei</link>) und soll eine
Funktion aufrufen, die den Inhalt des Banners liefert.
</para> </para>
<example> <example>
<title>Funktion 'insert'</title> <title>Funktion 'insert'</title>
<programlisting> <programlisting>
{* erzeugen des Banners *} {* erzeugen des Banners *}
{insert name="getBanner" lid=#banner_location_id# sid=#site_id#}</programlisting> {insert name="getBanner" lid=#banner_location_id# sid=#site_id#}
</programlisting>
</example> </example>
<para> <para>
In diesem Beispiel verwenden wir die Funktion 'getBanner' und In diesem Beispiel verwenden wir die Funktion 'getBanner' und
&uuml;bergeben die Parameter '#banner_location_id#' und '#site_id#'. <20>bergeben die Parameter '#banner_location_id#' und '#site_id#'.
Smarty wird daraufhin in Ihrer Applikatiopn nach einer Funktion Smarty wird daraufhin in Ihrer Applikatiopn nach einer Funktion
namens 'getBanner' suchen und diese mit den Parametern '#banner_location_id#' namens 'getBanner' suchen und diese mit den Parametern
und '#site_id#' aufrufen. Allen 'insert'-Funktionen in Ihrer Applikation '#banner_location_id#' und '#site_id#' aufrufen. Allen
muss 'insert_' vorangestellt werden, um Konflikte im Namensraum 'insert'-Funktionen in Ihrer Applikation muss 'insert_'
zu vermeiden. Ihre 'insert_getBanner()'-Funktion sollte etwas mit den vorangestellt werden, um Konflikte im Namensraum zu vermeiden. Ihre
&uuml;bergebenen Parametern unternehmen und das Resultat zur&uuml;ckgeben. 'insert_getBanner()'-Funktion sollte etwas mit den <20>bergebenen
Dieses Resultat wird an der Stelle des 'insert'-Tags in Ihrem Template ausgegeben. Parametern unternehmen und das Resultat zur<75>ckgeben. Dieses
In diesem Beispiel w&uuml;rde Smarty folgende Funktion aufrufen: Resultat wird an der Stelle des 'insert'-Tags in Ihrem Template
insert_getBanner(array("lid" => "12345","sid" => "67890")) und die erhaltenen Resultate ausgegeben. In diesem Beispiel w<>rde Smarty folgende Funktion
an Stelle des 'insert'-Tags ausgeben. aufrufen: insert_getBanner(array("lid" => "12345","sid" => "67890"))
und die erhaltenen Resultate an Stelle des 'insert'-Tags ausgeben.
</para> </para>
<para> <para>
Falls Sie das 'assign'-Attribut &uuml;bergeben, wird die Ausgabe Falls Sie das 'assign'-Attribut <EFBFBD>bergeben, wird die Ausgabe des
des 'insert'-Tags in dieser Variablen abgelegt. 'insert'-Tags in dieser Variablen abgelegt. Bemerkung: dies ist
Bemerkung: dies ist nicht sinnvoll, wenn Caching eingeschaltet ist. nicht sinnvoll, wenn <link linkend="variable.caching">Caching</link>
eingeschaltet ist.
</para> </para>
<para> <para>
Falls Sie das 'script'-Attribut &uuml;bergeben, wird das angegebene Falls Sie das 'script'-Attribut <EFBFBD>bergeben, wird das angegebene
PHP-Skript vor der Ausf&uuml;hrung der 'insert'-Funktion eingebunden. PHP-Skript vor der Ausf<EFBFBD>hrung der {insert}-Funktion eingebunden.
Dies ist n&uuml;tzlich, um die 'insert'-Funktion erst in diesem Dies ist n<EFBFBD>tzlich, um die {insert}-Funktion erst in diesem Skript zu
Skript zu definieren. definieren. Der Pfad kann absolut oder relativ zu <link
Der Pfad kann absolut oder relativ zu '$trusted_dir' angegeben werden. linkend="variable.trusted.dir">$trusted_dir</link> angegeben werden.
Wenn Sicherheit eingeschaltet ist, muss das Skript in '$trusted_dir' Wenn Sicherheit eingeschaltet ist, muss das Skript in <link
liegen. linkend="variable.trusted.dir">$trusted_dir</link> liegen.
</para> </para>
<para> <para>
Als zweites Argument wird der 'insert'-Funktion das Smarty-Objekt selbst Als zweites Argument wird der {insert}-Funktion das Smarty-Objekt
&uuml;bergeben. Damit kann dort auf die Informationen im Smarty-Objekt selbst <20>bergeben. Damit kann dort auf die Informationen im
zugegriffen werden. Smarty-Objekt zugegriffen werden.
</para> </para>
<note> <note>
<title>Technische Bemerkung</title> <title>Technische Bemerkung</title>
<para> <para>
Es gibt die M&ouml;glichkeit, Teile des Templates nicht zu cachen. Es gibt die M<EFBFBD>glichkeit, Teile des Templates nicht zu cachen. Wenn
Wenn Sie <link linkend="caching">caching</link> eingeschaltet haben, Sie <link linkend="caching">caching</link> eingeschaltet haben,
werden 'insert'-Tags nicht gecached. Sie werden jedesmal ausgef&uuml;hrt, wenn werden {insert}-Tags nicht gecached. Sie werden jedesmal
die Seite erstellt wird - selbst innerhalb gecachter Seiten. Dies funktioniert ausgef<EFBFBD>hrt, wenn die Seite erstellt wird - selbst innerhalb
gut f&uuml;r Dinge wie Werbung (Banner), Abstimmungen, Wetterberichte, Such-Resultate, Benutzer-Feedback-Ecke, etc. gecachter Seiten. Dies funktioniert gut f<>r Dinge wie Werbung
(Banner), Abstimmungen, Wetterberichte, Such-Resultate,
Benutzer-Feedback-Ecke, etc.
</para> </para>
</note> </note>
</sect1> </sect1>

View File

@@ -1,26 +1,63 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.9 Maintainer: andreas Status: ready -->
<sect1 id="language.function.ldelim"> <sect1 id="language.function.ldelim">
<title>ldelim,rdelim (Ausgabe der Trennzeichen)</title> <title>ldelim,rdelim (Ausgabe der Trennzeichen)</title>
<para> <para>
ldelim und rdelim werden verwendet, um die Trennzeichen auszugeben - ldelim und rdelim werden verwendet, um die Trennzeichen auszugeben -
in unserem Fall "{" oder "}" - ohne dass Smarty versucht, sie zu in unserem Fall "{" oder "}" - ohne dass Smarty versucht, sie zu
interpretieren. interpretieren. Um text im Template vor dem Interpretieren zu
schützen kann auch <link
linkend="language.function.literal">{literal}{/literal}</link>
verwendet werden. Siehe auch <link
linkend="language.variables.smarty.ldelim">{$smarty.ldelim}</link>.
</para> </para>
<example> <example>
<title>ldelim, rdelim</title> <title>ldelim, rdelim</title>
<programlisting> <programlisting>
<![CDATA[
{* gibt die konfigurierten Trennzeichen des Templates aus *} {* gibt die konfigurierten Trennzeichen des Templates aus *}
{ldelim}funktionsname{rdelim} Funktionen sehen in Smarty so aus! {ldelim}funktionsname{rdelim} Funktionen sehen in Smarty so aus!
]]>
</programlisting>
AUSGABE: <para>
Das obige Beispiel ergibt als Ausgabe:
</para>
<screen>
<![CDATA[
{funktionsname} Funktionen sehen in Smarty so aus!</programlisting> {funktionsname} Funktionen sehen in Smarty so aus!</programlisting>
]]>
</screen>
<para>
Ein weiteres Beispiel (diesmal mit javascript)
</para>
<programlisting>
<![CDATA[
<script language="JavaScript">
function foo() {ldelim}
... code ...
{rdelim}
</script>
]]>
</programlisting>
<para>
Ausgabe:
</para>
<screen>
<![CDATA[
<script language="JavaScript">
function foo() {
.... code ...
}
</script>
]]>
</screen>
</example> </example>
<para>
Siehe auch <link linkend="language.escaping">Smarty Parsing umgehen</link>
</para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -4,33 +4,41 @@
<sect1 id="language.function.literal"> <sect1 id="language.function.literal">
<title>literal</title> <title>literal</title>
<para> <para>
'literal'-Tags erlauben es, einen Block w&ouml;rtlich auszugeben, {literal}-Tags erlauben es, einen Block w<EFBFBD>rtlich auszugeben,
d.h. von der Interpretation durch Smarty auszuschliessen. d.h. von der Interpretation durch Smarty auszuschliessen. Dies ist
Dies ist vor allem f&uuml;r Javascript- oder andere Bl&ouml;cke vor allem f<EFBFBD>r Javascript- oder andere Bl<EFBFBD>cke n<>tzlich, die
n&uuml;tzlich, die geschwungene Klammern verwenden. Alles geschwungene Klammern verwenden. Alles was zwischen den
was zwischen den {literal}{/literal} Tags steht, wird direkt {literal}{/literal} Tags steht, wird direkt angezeigt. Wenn in
angezeigt.</para> einem {literal}-Block temlate-Tags verwendet werden sollen, is es
manchmal sinnvoller <link
linkend="language.function.ldelim">{ldelim}{rdelim}</link> statt
{literal} zu verwenden.
</para>
<example> <example>
<title>literal-Tags</title> <title>literal-Tags</title>
<programlisting> <programlisting>
<![CDATA[
{literal} {literal}
&lt;script language=javascript&gt; <script language=javascript>
<!--
&lt;!--
function isblank(field) { function isblank(field) {
if (field.value == '') if (field.value == '') {
{ return false; } return false;
else } else {
{
document.loginform.submit(); document.loginform.submit();
return true; return true;
} }
} }
// --&gt; // -->
</script>
&lt;/script&gt; {/literal}
{/literal}</programlisting> ]]>
</programlisting>
</example> </example>
<para>
Siehe auch <link linkend="language.escaping">Smarty Parsing
umgehen</link>.
</para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,23 +1,44 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.6 Maintainer: andreas Status: ready -->
<sect1 id="language.function.php"> <sect1 id="language.function.php">
<title>php</title> <title>php</title>
<para> <para>
'php'-Tags erlauben es, PHP-Code direkt in das Template einzubetten. Der Inhalt {php}-Tags erlauben es, PHP-Code direkt in das Template
wird nicht 'escaped', egal wie <link linkend="variable.php.handling">$php_handling</link> einzubetten. Der Inhalt wird nicht 'escaped', egal wie <link
konfiguriert ist. linkend="variable.php.handling">$php_handling</link> konfiguriert
Dieses Tag ist nur f&uuml;r erfahrene Benutzer gedacht und wird ist. Dieses Tag ist nur f<EFBFBD>r erfahrene Benutzer gedacht und wird
auch von diesen normalerweise nicht ben&ouml;tigt. auch von diesen normalerweise nicht ben<EFBFBD>tigt.
</para> </para>
<example> <example>
<title>php-Tags</title> <title>{php}-Tags</title>
<programlisting> <programlisting>
<![CDATA[
{php} {php}
// php Skript direkt von Template einbinden // php Skript direkt von Template einbinden
include("/pfad/zu/zeige_weather.php"); include("/pfad/zu/zeige_weather.php");
{/php}</programlisting> {/php}
]]>
</programlisting>
</example> </example>
<note>
<title>Technical Note</title>
<para>
Um auf PHP-Variablen in {php}-Bl<42>cken zugreifen zu k<>nnen, kann es
n<>tig sein, die Variable als <ulink
url="&url.php-manual;global">global</ulink> zu deklarieren. Der
{php}-Bl<42>ck l<>uft n<>mlich nicht in einem globalen Kontext, sondern
im Kontext der method des laufenden $smarty-Objektes.
</para>
</note>
<para>
Siehe auch <link
linkend="variable.php.handling">$php_handling</link>, <link
linkend="language.function.include.php">{include_php}</link>, <link
linkend="language.function.include">{include}</link> und <link
linkend="tips.componentized.templates">Template/Script
Komponenten</link>.
</para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.3 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.13 Maintainer: andreas Status: ready -->
<sect1 id="language.function.section"> <sect1 id="language.function.section">
<title>section,sectionelse</title> <title>section,sectionelse</title>
<informaltable frame="all"> <informaltable frame="all">
@@ -32,7 +32,7 @@
<entry>[$variable_name]</entry> <entry>[$variable_name]</entry>
<entry>Ja</entry> <entry>Ja</entry>
<entry><emphasis>n/a</emphasis></entry> <entry><emphasis>n/a</emphasis></entry>
<entry>Der Name des Z&auml;hlers f&uuml;r die Iterationen.</entry> <entry>Der Name des Z<EFBFBD>hlers f<>r die Iterationen.</entry>
</row> </row>
<row> <row>
<entry>start</entry> <entry>start</entry>
@@ -40,11 +40,13 @@
<entry>Nein</entry> <entry>Nein</entry>
<entry><emphasis>0</emphasis></entry> <entry><emphasis>0</emphasis></entry>
<entry> <entry>
Definiert die Startposition. Falls ein negativer Wert &uuml;bergeben wird, Definiert die Startposition. Falls ein negativer Wert <EFBFBD>bergeben
berechnet sich die Startposition ausgehend vom Ende des Arrays. Wenn zum Beispiel wird, berechnet sich die Startposition ausgehend vom Ende des
7 Werte in einem Array enthalten sind und die Startposition -2 ist, ist die Arrays. Wenn zum Beispiel 7 Werte in einem Array enthalten sind
berechnete Startposition 5. Unerlaubte Werte (Werte ausserhalb der Gr&ouml;sse des und die Startposition -2 ist, ist die berechnete Startposition
Arrays) werden automatisch auf den n&auml;chstm&ouml;glichen Wert gesetzt.</entry> 5. Unerlaubte Werte (Werte ausserhalb der Gr<47>sse des Arrays)
werden automatisch auf den n<>chstm<74>glichen Wert gesetzt.
</entry>
</row> </row>
<row> <row>
<entry>step</entry> <entry>step</entry>
@@ -52,9 +54,9 @@
<entry>Nein</entry> <entry>Nein</entry>
<entry><emphasis>1</emphasis></entry> <entry><emphasis>1</emphasis></entry>
<entry> <entry>
Definiert die Schrittweite mit welcher das Array durchlaufen wird. Definiert die Schrittweite mit welcher das Array durchlaufen
'step=2' iteriert durch 0, 2, 4, etc. Wenn ein negativer Wert &uuml;bergeben wurde, wird. 'step=2' iteriert durch 0, 2, 4, etc. Wenn ein negativer
wird das Array r&uuml;ckw&auml;rts durchlaufen. Wert <20>bergeben wurde, wird das Array r<>ckw<6B>rts durchlaufen.
</entry> </entry>
</row> </row>
<row> <row>
@@ -75,210 +77,368 @@
</tgroup> </tgroup>
</informaltable> </informaltable>
<para> <para>
Template-'sections' werden verwendet, um durch Arrays zu iterieren. Template-{sections} werden verwendet, um durch <emphasis
Jedes <emphasis>section</emphasis>-Tag muss mit einem <emphasis>/section</emphasis>-Tag role="bold">Arrays</emphasis> zu iterieren (<28>hnlich wie <link
kombiniert werden. <emphasis>name</emphasis> und <emphasis>loop</emphasis> sind erforderliche linkend="language.function.foreach">{foreach}</link>). Jedes
Parameter. Der Name der 'section' kann frei gew&auml;hlt werden, muss jedoch aus Buchstaben, <emphasis>section</emphasis>-Tag muss mit einem
Zahlen oder Unterstrichen bestehen. 'sections' k&ouml;nnen verschachtelt werden. Dabei ist <emphasis>/section</emphasis>-Tag kombiniert
zu beachten, dass sich ihre Namen unterscheiden. Aus der 'loop'-Variable (normalerweise ein werden. <emphasis>name</emphasis> und <emphasis>loop</emphasis> sind
Array von Werten) resultiert die Anzahl der Iterationen, die durchlaufen werden. erforderliche Parameter. Der Name der 'section' kann frei gew<65>hlt
Wenn ein Wert aus der 'loop'-Variable innerhalb der 'section' ausgegeben werden soll, werden, muss jedoch aus Buchstaben, Zahlen oder Unterstrichen
muss der 'section-name' umschlossen mit [] angef&uuml;gt werden. bestehen. {sections} k<>nnen verschachtelt werden. Dabei ist zu
<emphasis>sectionelse</emphasis> wird ausgef&uuml;hrt, wenn keine Werte in der beachten, dass sich ihre Namen unterscheiden. Aus der
'loop'-Variable enthalten sind. '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<65>gt werden.
<emphasis>sectionelse</emphasis> wird ausgef<65>hrt, wenn keine Werte
in der 'loop'-Variable enthalten sind.
</para> </para>
<example> <example>
<title>section</title> <title>section</title>
<programlisting role="php">
<![CDATA[
<?php
$data = array(1000,1001,1002);
$smarty->assign('custid',$data);
?>
]]>
</programlisting>
<programlisting> <programlisting>
<![CDATA[
{* dieses Beispiel gibt alle Werte des $KundenId Arrays aus *} {* dieses Beispiel gibt alle Werte des $KundenId Arrays aus *}
{section name=kunde loop=$KundenId} {section name=kunde loop=$KundenId}
id: {$KundenId[kunde]}&lt;br&gt; id: {$KundenId[kunde]}<br />
{/section} {/section}
{* alle Werte in umgekehrter Reihenfolge ausgeben: *}
{section name=kunde loop=$KundenId step=-1}
id: {$KundenId[kunde]}<br />
{/section}
]]>
</programlisting>
<para>
Ausgabe des obigen Beispiels:
</para>
<screen>
<![CDATA[
id: 1000<br />
id: 1001<br />
id: 1002<br />
<hr />
id: 1002<br />
id: 1001<br />
id: 1000<br />
]]>
</screen>
AUSGABE: <para>
Ein weiteres Beispiel, diesmal ohne ein zugewiesenes Array.
</para>
<programlisting>
<![CDATA[
{section name=foo start=10 loop=20 step=2}
{$smarty.section.foo.index}
{/section}
<hr />
{section name=bar loop=21 max=6 step=-2}
{$smarty.section.bar.index}
{/section}
]]>
</programlisting>
<para>
Ausgabe des obigen Beispiels:
</para>
<screen>
<![CDATA[
10 12 14 16 18
<hr />
20 18 16 14 12 10
]]>
</screen>
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
</example> </example>
<example> <example>
<title>section loop Variable</title> <title>section loop Variable</title>
<programlisting> <programlisting>
<![CDATA[
{* die 'loop'-Variable definiert nur die Anzahl der Iterationen, {* die 'loop'-Variable definiert nur die Anzahl der Iterationen,
Sie k&ouml;nnen in dieser 'section' auf jeden Wert des Templates Sie k<EFBFBD>nnen in dieser 'section' auf jeden Wert des Templates
zugreifen. Dieses Beispiel geht davon aus, dass $KundenId, $Namen und zugreifen. Dieses Beispiel geht davon aus, dass $KundenId, $Namen und
$Adressen Arrays sind, welche die selbe Anzahl Werte enthalten *} $Adressen Arrays sind, welche die selbe Anzahl Werte enthalten *}
{section name=kunde loop=$KundenId} {section name=kunde loop=$KundenId}
id: {$KundenId[kunde]}&lt;br&gt; id: {$KundenId[kunde]}<br>
name: {$Namen[kunde]}&lt;br&gt; name: {$Namen[kunde]}<br>
address: {$Adressen[kunde]}&lt;br&gt; address: {$Adressen[kunde]}<br>
&lt;p&gt; <p>
{/section} {/section}
]]>
</programlisting>
<para>
Ausgabe des obigen Beispiels:
</para>
<screen>
<![CDATA[
id: 1000<br>
AUSGABE: name: Peter M<>ller <br>
adresse: 253 N 45th<br>
id: 1000&lt;br&gt; <p>
name: Peter M&uuml;ller &lt;br&gt; id: 1001<br>
adresse: 253 N 45th&lt;br&gt; name: Fritz Muster<br>
&lt;p&gt; adresse:: 417 Mulberry ln<br>
id: 1001&lt;br&gt; <p>
name: Fritz Muster&lt;br&gt; id: 1002<br>
adresse:: 417 Mulberry ln&lt;br&gt; name: Hans Meier<br>
&lt;p&gt; adresse:: 5605 apple st<br>
id: 1002&lt;br&gt; <p>
name: Hans Meier&lt;br&gt; ]]>
adresse:: 5605 apple st&lt;br&gt; </screen>
&lt;p&gt;</programlisting>
</example> </example>
<example> <example>
<title>section names</title> <title>section names</title>
<programlisting> <programlisting>
{* die 'name'-Variable definiert den Namen der verwendet werden soll, <![CDATA[
um Daten aus dieser 'section' zu referenzieren *} {*
die 'name'-Variable definiert den Namen der verwendet werden soll,
um Daten aus dieser 'section' zu referenzieren
*}
{section name=meinedaten loop=$KundenId} {section name=meinedaten loop=$KundenId}
id: {$KundenId[meinedaten]}&lt;br&gt; <p>
name: {$Namen[meinedaten]}&lt;br&gt; id: {$KundenId[meinedaten]}<br>
address: {$Adressen[meinedaten]}&lt;br&gt; name: {$Namen[meinedaten]}<br>
&lt;p&gt; address: {$Adressen[meinedaten]}
{/section}</programlisting> </p>
{/section}
]]>
</programlisting>
</example> </example>
<example> <example>
<title>nested sections (verschachtelte 'sections')</title> <title>nested sections (verschachtelte 'sections')</title>
<programlisting role="php">
<![CDATA[
<?php
$id = array(1001,1002,1003);
$smarty->assign('custid',$id);
$fullnames = array('John Smith','Jack Jones','Jane Munson');
$smarty->assign('name',$fullnames);
$addr = array('253 N 45th', '417 Mulberry ln', '5605 apple st');
$smarty->assign('address',$addr);
$types = array(
array( 'home phone', 'cell phone', 'e-mail'),
array( 'home phone', 'web'),
array( 'cell phone')
);
$smarty->assign('contact_type', $types);
$info = array(
array('555-555-5555', '666-555-5555', 'john@myexample.com'),
array( '123-456-4', 'www.example.com'),
array( '0457878')
);
$smarty->assign('contact_info', $info);
?>
]]>
</programlisting>
<programlisting> <programlisting>
{* Sections k&ouml;nnen unbegrenzt tief verschachtelt werden. <![CDATA[
Mit verschachtelten 'sections' k&ouml;nnen Sie auf komplexe Datenstrukturen {*
zugreifen (wie zum Beispiel multidimensionale Arrays). Im folgenden Beispiel Sections k<>nnen unbegrenzt tief verschachtelt werden. Mit
ist $contact_type[customer] ein Array mit Kontakttypen des aktuellen Kunden. *} 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} {section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt; <hr />
name: {$name[customer]}&lt;br&gt; id: {$custid[customer]}<br />
address: {$address[customer]}&lt;br&gt; name: {$name[customer]}<br />
address: {$address[customer]}<br />
{section name=contact loop=$contact_type[customer]} {section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}&lt;br&gt; {$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br />
{/section} {/section}
&lt;p&gt;
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
id: 1000&lt;br&gt; </para>
name: John Smith&lt;br&gt; <programlisting>
address: 253 N 45th&lt;br&gt; <![CDATA[
home phone: 555-555-5555&lt;br&gt; <hr />
cell phone: 555-555-5555&lt;br&gt; id: 1000<br />
e-mail: john@mydomain.com&lt;br&gt; name: John Smith<br />
&lt;p&gt; address: 253 N 45th<br />
id: 1001&lt;br&gt; home phone: 555-555-5555<br />
name: Jack Jones&lt;br&gt; cell phone: 666-555-5555<br />
address: 417 Mulberry ln&lt;br&gt; e-mail: john@myexample.com<br />
home phone: 555-555-5555&lt;br&gt; <hr />
cell phone: 555-555-5555&lt;br&gt; id: 1001<br />
e-mail: jack@mydomain.com&lt;br&gt; name: Jack Jones<br />
&lt;p&gt; address: 417 Mulberry ln<br />
id: 1002&lt;br&gt; home phone: 123-456-4<br />
name: Jane Munson&lt;br&gt; web: www.example.com<br />
address: 5605 apple st&lt;br&gt; <hr />
home phone: 555-555-5555&lt;br&gt; id: 1002<br />
cell phone: 555-555-5555&lt;br&gt; name: Jane Munson<br />
e-mail: jane@mydomain.com&lt;br&gt; address: 5605 apple st<br />
&lt;p&gt;</programlisting> cell phone: 0457878<br />
]]>
</programlisting>
</example> </example>
<example> <example>
<title>sections und assoziative Arrays</title> <title>sections und assoziative Arrays</title>
<programlisting role="php">
<![CDATA[
<?php
$data = array(
array('name' => 'John Smith', 'home' => '555-555-5555',
'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
array('name' => 'Jack Jones', 'home' => '777-555-5555',
'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
array('name' => 'Jane Munson', 'home' => '000-555-5555',
'cell' => '123456', 'email' => 'jane@myexample.com')
);
$smarty->assign('contacts',$data);
?>
]]>
</programlisting>
<programlisting> <programlisting>
{* Dies ist ein Beispiel wie man einen assoziativen Array <![CDATA[
in einer 'section' ausgeben kann.*} {*
Dies ist ein Beispiel wie man einen assoziativen Array in einer
'section' ausgeben kann.
*}
{section name=customer loop=$contacts} {section name=customer loop=$contacts}
name: {$contacts[customer].name}&lt;br&gt; <p>
home: {$contacts[customer].home}&lt;br&gt; name: {$contacts[customer].name}<br />
cell: {$contacts[customer].cell}&lt;br&gt; home: {$contacts[customer].home}<br />
e-mail: {$contacts[customer].email}&lt;p&gt; cell: {$contacts[customer].cell}<br />
e-mail: {$contacts[customer].email}
</p>
{/section} {/section}
{* Anm. d. &uuml;bersetzers: Oft ist die Anwendung von 'foreach' k&uuml;rzer. *} {* Anm. d. <EFBFBD>bersetzers: Oft ist die Anwendung von 'foreach' k<EFBFBD>rzer. *}
{foreach item=customer from=$contacts} {foreach item=customer from=$contacts}
name: {$customer.name}&lt;br&gt; <p>
home: {$customer.home}&lt;br&gt; name: {$customer.name}<br />
cell: {$customer.cell}&lt;br&gt; home: {$customer.home}<br />
e-mail: {$customer.email}&lt;p&gt; cell: {$customer.cell}<br />
e-mail: {$customer.email}
</p>
{/foreach} {/foreach}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
name: John Smith&lt;br&gt; </para>
home: 555-555-5555&lt;br&gt; <programlisting>
cell: 555-555-5555&lt;br&gt; <![CDATA[
e-mail: john@mydomain.com&lt;p&gt; <p>
name: Jack Jones&lt;br&gt; name: John Smith<br />
home phone: 555-555-5555&lt;br&gt; home: 555-555-5555<br />
cell phone: 555-555-5555&lt;br&gt; cell: 555-555-5555<br />
e-mail: jack@mydomain.com&lt;p&gt; e-mail: john@mydomain.com
name: Jane Munson&lt;br&gt; </p>
home phone: 555-555-5555&lt;br&gt; <p>
cell phone: 555-555-5555&lt;br&gt; name: Jack Jones<br />
e-mail: jane@mydomain.com&lt;p&gt;</programlisting> 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>
<example> <example>
<title>sectionelse</title> <title>sectionelse</title>
<programlisting> <programlisting>
{* sectionelse wird aufgerufen, wenn keine $custid Werte vorhanden sind *} <![CDATA[
{*
sectionelse wird aufgerufen, wenn keine $custid Werte vorhanden sind
*}
{section name=customer loop=$custid} {section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
id: {$custid[customer]}<br>
{sectionelse} {sectionelse}
keine Werte in $custid gefunden keine Werte in $custid gefunden
{/section}</programlisting> {/section}
]]>
</programlisting>
</example> </example>
<para> <para>
Die Eigenschaften der 'section' werden in besonderen Variablen abgelegt. Die Eigenschaften der 'section' werden in besonderen Variablen
Diese sind wie folgt aufgebaut: {$smarty.section.sectionname.varname} abgelegt. Diese sind wie folgt aufgebaut: <link
linkend="language.variables.smarty.loops">{$smarty.section.sectionname.varname}</link>
</para> </para>
<note>
<para> <para>
Bermerkung: Seit Smarty 1.5.0 hat sich die Syntax der 'section' Eigenschaften Bermerkung: Seit Smarty 1.5.0 hat sich die Syntax der 'section'
von {%sectionname.varname%} zu {$smarty.section.sectionname.varname} ge&auml;ndert. Eigenschaften von {%sectionname.varname%} zu
Die alte Syntax wird noch immer unterst&uuml;tzt, die Dokumentation erw&auml;hnt {$smarty.section.sectionname.varname} ge<67>ndert. Die alte Syntax
jedoch nur noch die neue Schreibweise. wird noch immer unterst<73>tzt, die Dokumentation erw<72>hnt jedoch nur
noch die neue Schreibweise.
</para> </para>
</note>
<sect2 id="section.property.index"> <sect2 id="section.property.index">
<title>index</title> <title>index</title>
<para> <para>
'index' wird verwendet, um den aktuellen Schleifen-Index anzuzeigen. Er startet 'index' wird verwendet, um den aktuellen Schleifen-Index
bei 0 (beziehungsweise der definierten Startposition) und inkrementiert in 1-er Schritten anzuzeigen. Er startet bei 0 (beziehungsweise der definierten
(beziehungsweise der definierten Schrittgr&ouml;sse). Startposition) und inkrementiert in 1-er Schritten (beziehungsweise
der definierten Schrittgr<67>sse).
</para> </para>
<note> <note>
<title>Technische Bemerkung</title> <title>Technische Bemerkung</title>
<para> <para>
Wenn 'step' und 'start' nicht &uuml;bergeben werden, verh&auml;lt sich Wenn 'step' und 'start' nicht <EFBFBD>bergeben werden, verh<EFBFBD>lt sich der
der Wert wie die 'section'-Eigenschaft 'iteration', ausser dass Wert wie die 'section'-Eigenschaft 'iteration', ausser dass er bei
er bei 0 anstatt 1 beginnt. 0 anstatt 1 beginnt.
</para> </para>
</note> </note>
<example> <example>
<title>'section'-Eigenschaft 'index'</title> <title>'section'-Eigenschaft 'index'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br />
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
0 id: 1000&lt;br&gt; </para>
1 id: 1001&lt;br&gt; <programlisting>
2 id: 1002&lt;br&gt; <![CDATA[
0 id: 1000<br />
1 id: 1001<br />
2 id: 1002<br />
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
@@ -291,53 +451,64 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<example> <example>
<title>section'-Eigenschaft 'index_prev'</title> <title>section'-Eigenschaft 'index_prev'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br>
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *} {* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *}
{if $custid[customer.index_prev] ne $custid[customer.index]} {if $custid[customer.index_prev] ne $custid[customer.index]}
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt; Die Kundennummer hat sich ge<EFBFBD>ndert.<br>
{/if} {/if}
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
0 id: 1000&lt;br&gt; </para>
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt; <programlisting>
1 id: 1001&lt;br&gt; <![CDATA[
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt; 0 id: 1000<br>
2 id: 1002&lt;br&gt; Die Kundennummer hat sich ge<67>ndert.<br>
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt; 1 id: 1001<br>
Die Kundennummer hat sich ge<67>ndert.<br>
2 id: 1002<br>
Die Kundennummer hat sich ge<67>ndert.<br>
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
<sect2 id="section.property.index.next"> <sect2 id="section.property.index.next">
<title>index_next</title> <title>index_next</title>
<para> <para>
'index_next' wird verwendet um den n&auml;chsten 'loop'-Index 'index_next' wird verwendet um den n<EFBFBD>chsten 'loop'-Index
auszugeben. Bei der letzten Iteration ist dieser Wert um 1 gr&ouml;sser auszugeben. Bei der letzten Iteration ist dieser Wert um 1 gr<EFBFBD>sser
als der aktuelle 'loop'-Index (inklusive dem definierten 'step' Wert). als der aktuelle 'loop'-Index (inklusive dem definierten 'step'
Wert).
</para> </para>
<example> <example>
<title>section'-Eigenschaft 'index_next'</title> <title>section'-Eigenschaft 'index_next'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br>
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *} {* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *}
{if $custid[customer.index_next] ne $custid[customer.index]} {if $custid[customer.index_next] ne $custid[customer.index]}
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; Die Kundennummer wird sich <EFBFBD>ndern.<br>
{/if} {/if}
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
0 id: 1000&lt;br&gt; </para>
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; <programlisting>
1 id: 1001&lt;br&gt; <![CDATA[
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; 0 id: 1000<br>
2 id: 1002&lt;br&gt; Die Kundennummer wird sich <20>ndern.<br>
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; 1 id: 1001<br>
Die Kundennummer wird sich <20>ndern.<br>
2 id: 1002<br>
Die Kundennummer wird sich <20>ndern.<br>
]]<5D>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
@@ -347,147 +518,175 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
'iteration' wird verwendet um die aktuelle Iteration auszugeben. 'iteration' wird verwendet um die aktuelle Iteration auszugeben.
</para> </para>
<para> <para>
Bemerkung: Die Eigenschaften 'start', 'step' und 'max' beeinflussen 'iteration' Bemerkung: Die Eigenschaften 'start', 'step' und 'max'
nicht, die Eigenschaft 'index' jedoch schon. 'iteration' startet im gegensatz beeinflussen 'iteration' nicht, die Eigenschaft 'index' jedoch
zu 'index' bei 1. 'rownum' ist ein Alias f&uuml;r 'iteration' und arbeitet identisch. schon. 'iteration' startet im gegensatz zu 'index' bei 1. 'rownum'
ist ein Alias f<>r 'iteration' und arbeitet identisch.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'iteration'</title> <title>'section'-Eigenschaft 'iteration'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid start=5 step=2} {section name=customer loop=$custid start=5 step=2}
aktuelle loop iteration: {$smarty.section.customer.iteration}&lt;br&gt; aktuelle loop iteration: {$smarty.section.customer.iteration}<br>
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br>
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das gleiche *} {* zur Information, $custid[customer.index] und $custid[customer] bedeuten das gleiche *}
{if $custid[customer.index_next] ne $custid[customer.index]} {if $custid[customer.index_next] ne $custid[customer.index]}
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; Die Kundennummer wird sich <EFBFBD>ndern.<br>
{/if} {/if}
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
</para>
<programlisting>
<![CDATA[
aktuelle loop iteration: 1 aktuelle loop iteration: 1
5 id: 1000&lt;br&gt; 5 id: 1000<br>
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; Die Kundennummer wird sich <EFBFBD>ndern.<br>
aktuelle loop iteration: 2 aktuelle loop iteration: 2
7 id: 1001&lt;br&gt; 7 id: 1001<br>
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; Die Kundennummer wird sich <EFBFBD>ndern.<br>
aktuelle loop iteration: 3 aktuelle loop iteration: 3
9 id: 1002&lt;br&gt; 9 id: 1002<br>
Die Kundennummer wird sich &auml;ndern.&lt;br&gt; Die Kundennummer wird sich <EFBFBD>ndern.<br>
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
<sect2 id="section.property.first"> <sect2 id="section.property.first">
<title>first</title> <title>first</title>
<para> <para>
'first' ist 'true', wenn die aktuelle Iteration die erste dieser
'first' ist 'true', wenn die aktuelle Iteration die erste dieser 'section' ist. 'section' ist.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'first'</title> <title>'section'-Eigenschaft 'first'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{if $smarty.section.customer.first} {if $smarty.section.customer.first}
&lt;table&gt; <table>
{/if} {/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id: <tr><td>{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt; {$custid[customer]}</td></tr>
{if $smarty.section.customer.last} {if $smarty.section.customer.last}
&lt;/table&gt; </table>
{/if} {/if}
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
&lt;table&gt; </para>
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt; <programlisting>
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt; <![CDATA[
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt; <table>
&lt;/table&gt; <tr><td>0 id: 1000</td></tr>
<tr><td>1 id: 1001</td></tr>
<tr><td>2 id: 1002</td></tr>
</table>
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
<sect2 id="section.property.last"> <sect2 id="section.property.last">
<title>last</title> <title>last</title>
<para> <para>
'last' ist 'true' wenn die aktuelle Iteration die letzte dieser
'last' ist 'true' wenn die aktuelle Iteration die letzte dieser 'section' ist. 'section' ist.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'last'</title> <title>'section'-Eigenschaft 'last'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{if $smarty.section.customer.first} {if $smarty.section.customer.first}
&lt;table&gt; <table>
{/if} {/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id: <tr><td>{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt; {$custid[customer]}</td></tr>
{if $smarty.section.customer.last} {if $smarty.section.customer.last}
&lt;/table&gt; </table>
{/if} {/if}
{/section} {/section}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
&lt;table&gt; </para>
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt; <programlisting>
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt; <![CDATA[
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt; <table>
&lt;/table&gt; <tr><td>0 id: 1000</td></tr>
<tr><td>1 id: 1001</td></tr>
<tr><td>2 id: 1002</td></tr>
</table>
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
<sect2 id="section.property.rownum"> <sect2 id="section.property.rownum">
<title>rownum</title> <title>rownum</title>
<para> <para>
'rownum' wird verwendet um die aktuelle Iteration (startend bei 1) auszugeben. 'rownum' wird verwendet um die aktuelle Iteration (startend bei 1)
'rownum' ist ein Alias f&uuml;r 'iteration' und arbeitet identisch. auszugeben. 'rownum' ist ein Alias f<EFBFBD>r 'iteration' und arbeitet
identisch.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'rownum'</title> <title>'section'-Eigenschaft 'rownum'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{$smarty.section.customer.rownum} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.rownum} id: {$custid[customer]}<br />
{/section} {/section}
</programlisting>
<para>
AUSGABE: Ausgabe des obigen Beispiels:
</para>
1 id: 1000&lt;br&gt; <programlisting>
2 id: 1001&lt;br&gt; <![CDATA[
3 id: 1002&lt;br&gt; 1 id: 1000<br />
2 id: 1001<br />
3 id: 1002<br />
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
<sect2 id="section.property.loop"> <sect2 id="section.property.loop">
<title>loop</title> <title>loop</title>
<para> <para>
'loop' wird verwendet, um die Nummer letzte Iteration der 'section' auszugeben. 'loop' wird verwendet, um die Nummer letzte Iteration der 'section'
Dieser Wert kann inner- und ausserhalb der 'section' verwendet werden. auszugeben. Dieser Wert kann inner- und ausserhalb der 'section'
verwendet werden.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'loop'</title> <title>'section'-Eigenschaft 'loop'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid} {section name=customer loop=$custid}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br />
{/section} {/section}
Es wurden {$smarty.section.customer.loop} Kunden angezeigt. Es wurden {$smarty.section.customer.loop} Kunden angezeigt.
]]>
AUSGABE: </programlisting>
<para>
0 id: 1000&lt;br&gt; Ausgabe des obigen Beispiels:
1 id: 1001&lt;br&gt; </para>
2 id: 1002&lt;br&gt; <programlisting>
<![CDATA[
0 id: 1000<br />
1 id: 1001<br />
2 id: 1002<br />
Es wurden 3 Kunden angezeigt. Es wurden 3 Kunden angezeigt.
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
@@ -495,14 +694,16 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<title>show</title> <title>show</title>
<para> <para>
<emphasis>show</emphasis> kann die Werte 'true' oder 'false' haben. <emphasis>show</emphasis> kann die Werte 'true' oder 'false' haben.
Falls der Wert 'true' ist, wird die 'section' angezeigt. Falls Falls der Wert 'true' ist, wird die 'section' angezeigt. Falls der
der Wert 'false' ist, wird die 'section' - ausser dem 'sectionelse' - nicht ausgegeben. Wert 'false' ist, wird die 'section' - ausser dem 'sectionelse' -
nicht ausgegeben.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'show'</title> <title>'section'-Eigenschaft 'show'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid show=$show_customer_info} {section name=customer loop=$custid show=$show_customer_info}
{$smarty.section.customer.rownum} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.rownum} id: {$custid[customer]}<br />
{/section} {/section}
{if $smarty.section.customer.show} {if $smarty.section.customer.show}
@@ -510,15 +711,19 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
{else} {else}
die 'section' wurde nicht angezeigt die 'section' wurde nicht angezeigt
{/if} {/if}
]]>
</programlisting>
AUSGABE: <para>
Ausgabe des obigen Beispiels:
1 id: 1000&lt;br&gt; </para>
2 id: 1001&lt;br&gt; <programlisting>
3 id: 1002&lt;br&gt; <![CDATA[
1 id: 1000<br />
2 id: 1001<br />
3 id: 1002<br />
die 'section' wurde angezeigt die 'section' wurde angezeigt
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>
@@ -526,25 +731,31 @@ e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
<title>total</title> <title>total</title>
<para> <para>
Wird verwendet um die Anzahl der durchlaufenen Iterationen einer Wird verwendet um die Anzahl der durchlaufenen Iterationen einer
'section' auszugeben. Kann innerhalb oder ausserhalb der 'section' verwendet 'section' auszugeben. Kann innerhalb oder ausserhalb der 'section'
werden. verwendet werden.
</para> </para>
<example> <example>
<title>'section'-Eigenschaft 'total'</title> <title>'section'-Eigenschaft 'total'</title>
<programlisting> <programlisting>
<![CDATA[
{section name=customer loop=$custid step=2} {section name=customer loop=$custid step=2}
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt; {$smarty.section.customer.index} id: {$custid[customer]}<br>
{/section} {/section}
Es wurden {$smarty.section.customer.total} Kunden angezeigt. Es wurden {$smarty.section.customer.total} Kunden angezeigt.
]]>
OUTPUT: </programlisting>
<para>
0 id: 1000&lt;br&gt; Ausgabe des obigen Beispiels:
2 id: 1001&lt;br&gt; </para>
4 id: 1002&lt;br&gt; <programlisting>
<![CDATA[
0 id: 1000<br>
2 id: 1001<br>
4 id: 1002<br>
Es wurden 3 Kunden angezeigt. Es wurden 3 Kunden angezeigt.
]]>
</programlisting> </programlisting>
</example> </example>
</sect2> </sect2>

View File

@@ -1,24 +1,26 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ --> <!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.6 Maintainer: andreas Status: ready -->
<sect1 id="language.function.strip"> <sect1 id="language.function.strip">
<title>strip</title> <title>strip</title>
<para> <para>
Webdesigner haben oft das Problem, dass Leerzeichen und Zeilenumbr&uuml;che Webdesigner haben oft das Problem, dass Leerzeichen und
die Ausgabe des erzeugten HTML im Browser beeinflussen. Oft werden deshalb alle Zeilenumbr<62>che die Ausgabe des erzeugten HTML im Browser
Tags aufeinanderfolgend im Template notiert, was aber zu einer schlechten beeinflussen. Oft werden deshalb alle Tags aufeinanderfolgend im
Lesbarkeit f&uuml;hrt. Template notiert, was aber zu einer schlechten Lesbarkeit f<EFBFBD>hrt.
</para> </para>
<para> <para>
Aus dem Inhalt zwischen den {strip}{/strip}-Tags werden alle Leerzeichen und Aus dem Inhalt zwischen den {strip}{/strip}-Tags werden alle
Zeilenumbr&uuml;che entfernt. So k&ouml;nnen Sie Ihre Templates lesbar Leerzeichen und Zeilenumbr<EFBFBD>che entfernt. So k<EFBFBD>nnen Sie Ihre
halten, ohne sich Sorgen um die Leerzeichen zu machen. Templates lesbar halten, ohne sich Sorgen um die Leerzeichen zu
machen.
</para> </para>
<note> <note>
<title>Technische Bemerkung</title> <title>Technische Bemerkung</title>
<para> <para>
{strip}{/strip} &auml;ndert nicht den Inhalt einer Template-Variablen. {strip}{/strip} <EFBFBD>ndert nicht den Inhalt einer Template-Variablen.
Daf&uuml;r gibt es den <link linkend="language.modifier.strip">strip Modifikator</link>. Daf<61>r gibt es den <link linkend="language.modifier.strip">strip
Modifikator</link>.
</para> </para>
</note> </note>
<example> <example>
@@ -30,27 +32,36 @@
<table border=0> <table border=0>
<tr> <tr>
<td> <td>
<A HREF="{$url}"> <a HREF="{$url}">
<font color="red">Das ist ein Test.</font> <font color="red">Das ist ein Test.</font>
</A> </a>
</td> </td>
</tr> </tr>
</table> </table>
{/strip} {/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>
]]> ]]>
</programlisting> </programlisting>
<para>
Ausgebe des obigen Beispiels:
</para>
<screen>
<![CDATA[
<table border=0><tr><td><A HREF="http://my.domain.com"><font color="red">Das ist ein Test.</font></A></td></tr></table>
]]>
</screen>
</example> </example>
<para> <para>
Achtung: im obigen Beispiel beginnen und enden alle Zeilen mit HTML-Tags. Achtung: im obigen Beispiel beginnen und enden alle Zeilen mit
Falls Sie Abschnitte haben, die nur Text enthalten, werden diese ebenfalls HTML-Tags. Falls Sie Abschnitte haben, die nur Text enthalten,
zusammengeschlossen. Das kann zu unerw&uuml;nschten Resultaten f&uuml;hren. werden diese ebenfalls zusammengeschlossen. Das kann zu
unerw<72>nschten Resultaten f<>hren.
</para>
<para>
Siehe auch <link linkend="language.modifier.strip">strip-Modifikator
(Zeichenkette strippen)</link>
</para> </para>
</sect1> </sect1>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file
Local variables: Local variables:
mode: sgml mode: sgml