Files
smarty/docs/de/designers/language-builtin-functions/language-function-section.xml
2004-04-13 08:46:28 +00:00

570 lines
18 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<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&auml;hlers f&uuml;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 &uuml;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&ouml;sse des
Arrays) werden automatisch auf den n&auml;chstm&ouml;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 &uuml;bergeben wurde,
wird das Array r&uuml;ckw&auml;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&auml;hlt werden, muss jedoch aus Buchstaben,
Zahlen oder Unterstrichen bestehen. 'sections' k&ouml;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&uuml;gt werden.
<emphasis>sectionelse</emphasis> wird ausgef&uuml;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]}&lt;br&gt;
{/section}
AUSGABE:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
</example>
<example>
<title>section loop Variable</title>
<programlisting>
{* die 'loop'-Variable definiert nur die Anzahl der Iterationen,
Sie k&ouml;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]}&lt;br&gt;
name: {$Namen[kunde]}&lt;br&gt;
address: {$Adressen[kunde]}&lt;br&gt;
&lt;p&gt;
{/section}
AUSGABE:
id: 1000&lt;br&gt;
name: Peter M&uuml;ller &lt;br&gt;
adresse: 253 N 45th&lt;br&gt;
&lt;p&gt;
id: 1001&lt;br&gt;
name: Fritz Muster&lt;br&gt;
adresse:: 417 Mulberry ln&lt;br&gt;
&lt;p&gt;
id: 1002&lt;br&gt;
name: Hans Meier&lt;br&gt;
adresse:: 5605 apple st&lt;br&gt;
&lt;p&gt;</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]}&lt;br&gt;
name: {$Namen[meinedaten]}&lt;br&gt;
address: {$Adressen[meinedaten]}&lt;br&gt;
&lt;p&gt;
{/section}</programlisting>
</example>
<example>
<title>nested sections (verschachtelte 'sections')</title>
<programlisting>
{* Sections k&ouml;nnen unbegrenzt tief verschachtelt werden.
Mit verschachtelten 'sections' k&ouml;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]}&lt;br&gt;
name: {$name[customer]}&lt;br&gt;
address: {$address[customer]}&lt;br&gt;
{section name=contact loop=$contact_type[customer]}
{$contact_type[customer][contact]}: {$contact_info[customer][contact]}&lt;br&gt;
{/section}
&lt;p&gt;
{/section}
AUSGABE:
id: 1000&lt;br&gt;
name: John Smith&lt;br&gt;
address: 253 N 45th&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: john@mydomain.com&lt;br&gt;
&lt;p&gt;
id: 1001&lt;br&gt;
name: Jack Jones&lt;br&gt;
address: 417 Mulberry ln&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jack@mydomain.com&lt;br&gt;
&lt;p&gt;
id: 1002&lt;br&gt;
name: Jane Munson&lt;br&gt;
address: 5605 apple st&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jane@mydomain.com&lt;br&gt;
&lt;p&gt;</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}&lt;br&gt;
home: {$contacts[customer].home}&lt;br&gt;
cell: {$contacts[customer].cell}&lt;br&gt;
e-mail: {$contacts[customer].email}&lt;p&gt;
{/section}
{* Anm. d. &uuml;bersetzers: Oft ist die Anwendung von 'foreach' k&uuml;rzer. *}
{foreach item=customer from=$contacts}
name: {$customer.name}&lt;br&gt;
home: {$customer.home}&lt;br&gt;
cell: {$customer.cell}&lt;br&gt;
e-mail: {$customer.email}&lt;p&gt;
{/foreach}
AUSGABE:
name: John Smith&lt;br&gt;
home: 555-555-5555&lt;br&gt;
cell: 555-555-5555&lt;br&gt;
e-mail: john@mydomain.com&lt;p&gt;
name: Jack Jones&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jack@mydomain.com&lt;p&gt;
name: Jane Munson&lt;br&gt;
home phone: 555-555-5555&lt;br&gt;
cell phone: 555-555-5555&lt;br&gt;
e-mail: jane@mydomain.com&lt;p&gt;</programlisting>
</example>
<example>
<title>sectionelse</title>
<programlisting>
{* sectionelse wird aufgerufen, wenn keine $custid Werte vorhanden sind *}
{section name=customer loop=$custid}
id: {$custid[customer]}&lt;br&gt;
{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&auml;ndert.
Die alte Syntax wird noch immer unterst&uuml;tzt, die Dokumentation erw&auml;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&ouml;sse).
</para>
<note>
<title>Technische Bemerkung</title>
<para>
Wenn 'step' und 'start' nicht &uuml;bergeben werden, verh&auml;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]}&lt;br&gt;
{/section}
AUSGABE:
0 id: 1000&lt;br&gt;
1 id: 1001&lt;br&gt;
2 id: 1002&lt;br&gt;
</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]}&lt;br&gt;
{* 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&auml;ndert.&lt;br&gt;
{/if}
{/section}
AUSGABE:
0 id: 1000&lt;br&gt;
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt;
1 id: 1001&lt;br&gt;
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt;
2 id: 1002&lt;br&gt;
Die Kundennummer hat sich ge&auml;ndert.&lt;br&gt;
</programlisting>
</example>
</sect2>
<sect2 id="section.property.index.next">
<title>index_next</title>
<para>
'index_next' wird verwendet um den n&auml;chsten 'loop'-Index
auszugeben. Bei der letzten Iteration ist dieser Wert um 1 gr&ouml;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]}&lt;br&gt;
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das selbe *}
{if $custid[customer.index_next] ne $custid[customer.index]}
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
{/if}
{/section}
AUSGABE:
0 id: 1000&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
1 id: 1001&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
2 id: 1002&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
</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&uuml;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}&lt;br&gt;
{$smarty.section.customer.index} id: {$custid[customer]}&lt;br&gt;
{* zur Information, $custid[customer.index] und $custid[customer] bedeuten das gleiche *}
{if $custid[customer.index_next] ne $custid[customer.index]}
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
{/if}
{/section}
AUSGABE:
aktuelle loop iteration: 1
5 id: 1000&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
aktuelle loop iteration: 2
7 id: 1001&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
aktuelle loop iteration: 3
9 id: 1002&lt;br&gt;
Die Kundennummer wird sich &auml;ndern.&lt;br&gt;
</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}
&lt;table&gt;
{/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt;
{if $smarty.section.customer.last}
&lt;/table&gt;
{/if}
{/section}
AUSGABE:
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
</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}
&lt;table&gt;
{/if}
&lt;tr&gt;&lt;td&gt;{$smarty.section.customer.index} id:
{$custid[customer]}&lt;/td&gt;&lt;/tr&gt;
{if $smarty.section.customer.last}
&lt;/table&gt;
{/if}
{/section}
AUSGABE:
&lt;table&gt;
&lt;tr&gt;&lt;td&gt;0 id: 1000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1 id: 1001&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2 id: 1002&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
</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&uuml;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]}&lt;br&gt;
{/section}
AUSGABE:
1 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
3 id: 1002&lt;br&gt;
</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]}&lt;br&gt;
{/section}
Es wurden {$smarty.section.customer.loop} Kunden angezeigt.
AUSGABE:
0 id: 1000&lt;br&gt;
1 id: 1001&lt;br&gt;
2 id: 1002&lt;br&gt;
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]}&lt;br&gt;
{/section}
{if $smarty.section.customer.show}
die 'section' wurde angezeigt
{else}
die 'section' wurde nicht angezeigt
{/if}
AUSGABE:
1 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
3 id: 1002&lt;br&gt;
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]}&lt;br&gt;
{/section}
Es wurden {$smarty.section.customer.total} Kunden angezeigt.
OUTPUT:
0 id: 1000&lt;br&gt;
2 id: 1001&lt;br&gt;
4 id: 1002&lt;br&gt;
Es wurden 3 Kunden angezeigt.
</programlisting>
</example>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->