sync with en

This commit is contained in:
messju
2005-06-23 18:56:00 +00:00
parent c765bf7377
commit 40e9b14b19
6 changed files with 778 additions and 517 deletions

View File

@@ -1,85 +1,94 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.2 Maintainer: andreas Status: ready -->
<sect1 id="language.function.capture">
<title>capture (Ausgabe abfangen)</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>Ben&ouml;tigt</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>no</entry>
<entry><emphasis>default</emphasis></entry>
<entry>Der Name des abgefangenen Blocks</entry>
</row>
<row>
<entry>assign</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Der Name der Variable welcher der Wert zugewiesen werden soll.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<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 &uuml;ber
'$smarty.capture.foo' angesprochen werden. Falls kein 'name'-Attribut
&uuml;bergeben wurde, wird der Inhalt in 'default' abgelegt.
Jede {capture} Sektion muss mit {/capture} beendet werden.
'capture'-Bl&ouml;cke k&ouml;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>
<!-- EN-Revision: 1.8 Maintainer: andreas Status: ready -->
<sect1 id="language.function.capture">
<title>capture (Ausgabe abfangen)</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>Ben<EFBFBD>tigt</entry>
<entry>Standardwert</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>name</entry>
<entry>string</entry>
<entry>no</entry>
<entry><emphasis>default</emphasis></entry>
<entry>Der Name des abgefangenen Blocks</entry>
</row>
<row>
<entry>assign</entry>
<entry>string</entry>
<entry>No</entry>
<entry><emphasis>n/a</emphasis></entry>
<entry>Der Name der Variable welcher der Wert zugewiesen werden soll.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<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 Capture-Variablen abgelegt und kann <20>ber <link
linkend="language.variables.smarty.capture">$smarty.capture.foo</link>
angesprochen werden. Falls kein 'name'-Attribut <20>bergeben wurde,
wird der Inhalt in 'default' (also $smarty.capture.default)
abgelegt. Jede {capture} Sektion muss mit {/capture} beendet
werden. 'capture'-Bl<42>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 <link
linkend="language.function.insert">{insert}</link> abfangen
wollen. Sie sollten die Ausgabe nicht abfangen, wenn Caching
eingeschaltet ist und Sie einen <link
linkend="language.function.insert">{insert}</link> Befehl
verwenden, um Ausgaben vom Caching auszuschliessen.
</para>
</caution>
<para>
<example>
<title>Template-Inhalte abfangen</title>
<programlisting>
<![CDATA[
{* Tabellenzeile nur ausgeben, wenn Inhalt vorhanden *}
{capture name=banner}
{include file="get_banner.tpl"}
{/capture}
{if $smarty.capture.banner ne ""}
&lt;tr&gt;
&lt;td&gt;
{$smarty.capture.banner}
&lt;/td&gt;
&lt;/tr&gt;
{/if}</programlisting>
</example>
</para>
<table>
<tr>
<td>
{$smarty.capture.banner}
</td>
</tr>
</table>
{/if}
]]>
</programlisting>
</example>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,124 +1,158 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.4 Maintainer: andreas Status: ready -->
<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&auml;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&auml;nglich sind.
Dieses Attribut wird von 'scope' abgel&ouml;st und sollte nicht mehr
verwendet werden. Falls 'scope' &uuml;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&uuml;r weitere Informationen.
</para>
<example>
<title>Funktion config_load</title>
<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<75>nglich sind.
</entry>
</row>
<row>
<entry>global</entry>
<entry>boolean</entry>
<entry>Nein</entry>
<entry><emphasis>No</emphasis></entry>
<entry>
Definiert, ob die Variablen von allen Templates aus zug<EFBFBD>nglich
sind. WICHTIG: Dieses Attribut wird von 'scope' abgel<EFBFBD>st und
sollte nicht mehr verwendet werden. Falls 'scope' <EFBFBD>bergeben
wurde, wird 'global' ignoriert.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Diese Funktion wird verwendet, um <link
linkend="language.config.variables">Variablen aus einer
Konfigurationsdatei</link> 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>
<para>
beispiel.conf
</para>
<programlisting>
<![CDATA[
#Dies ist ein Konfigurationsdateikommentar
<programlisting>
# globale Variablen
seitenTitel = "Hauptmen<65>"
bodyHintergrundFarbe = #000000
tabelleHintergrundFarbe = #000000
reiheHintergrundFarbe = #00ff00
# Kundenvariablen
[Kunden]
seitenTitel = "Kundeninfo"
]]>
</programlisting>
<para>and the template</para>
<programlisting>
<![CDATA[
{config_load file="farben.conf"}
{config_load file="example.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>
<tr bgcolor="{#reiheHintergrundFarbe#}">
<td>Vornamen</td>
<td>Nachnamen</td>
<td>Adresse</td>
</tr>
</table>
</body>
</html>
]]>
</programlisting>
</example>
<para>
Konfigurationsdateien k&ouml;nnen Abschnitte enthalten. Um Variablen
aus einem Abschnitt zu laden, k&ouml;nnen Sie das Attribut
<emphasis>section</emphasis> &uuml;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>
</programlisting>
</example>
<para>
<link linkend="config.files">Konfigurationsdateien</link> k<>nnen
Abschnitte enthalten. Um Variablen aus einem Abschnitt zu laden,
k<EFBFBD>nnen Sie das Attribut <emphasis>section</emphasis> <EFBFBD>bergeben.
</para>
<para>
Bemerkung: <emphasis>Konfigurationdatei-Abschnitte
(sections)</emphasis> und die eingebaute Template Funktion namens
<link linkend="language.function.section">section</link> haben ausser
dem Namen nichts gemeinsam.
</para>
<example>
<title>Funktion config_load mit Abschnitten</title>
<programlisting>
<![CDATA[
{config_load file="farben.conf" section="Kunde"}
{config_load file="beispiel.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>
<tr bgcolor="{#reiheHintergrundFarbe#}">
<td>Vornamen</td>
<td>Nachnamen</td>
<td>Adresse</td>
</tr>
</table>
</body>
</html>
]]>
</programlisting>
</example>
</programlisting>
</example>
<para>
Siehe auch <link
linkend="config.files">Konfigurationsdateien</link>, <link
linkend="language.config.variables">Variablen aus
Konfigurationsdateien</link>, <link
linkend="variable.config.dir">$config_dir</link>, <link
linkend="api.get.config.vars">get_config_vars()</link> und <link
linkend="api.config.load">config_load()</link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,161 +1,218 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<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&uuml;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&uuml;r den aktuellen Schl&uuml;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&uuml;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&uuml;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&ouml;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&uuml;hrt wenn
keine Werte in der <emphasis>from</emphasis> Variable &uuml;bergeben wurden.
</para>
<example>
<title>foreach</title>
<programlisting>
<!-- EN-Revision: 1.7 Maintainer: andreas Status: ready -->
<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<EFBFBD>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<EFBFBD>r den aktuellen Schl<EFBFBD>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<EFBFBD>r die Abfrage der 'foreach'-Eigenschaften.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
Die <emphasis>foreach</emphasis> Schleife ist eine Alternative zu
<link
linkend="language.function.section"><emphasis>section</emphasis></link>.
<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<65>hrt wenn keine Werte in der <emphasis>from</emphasis>
Variable <20>bergeben wurden.
</para>
<example>
<title>{foreach} - item</title>
<programlisting role="php">
<![CDATA[
<?php
$arr = array( 1001,1002,1003);
$smarty->assign('custid', $arr);
?>
]]>
</programlisting>
<programlisting>
<![CDATA[
<?php
{* dieses Beispiel gibt alle Werte aus dem $KundenId Array aus *}
{foreach from=$KundenId item=aktuelle_id}
id: {$aktuelle_id}&lt;br&gt;
id: {$aktuelle_id}<br>
{/foreach}
]]>
</programlisting>
<para>
Das obige Beispiel erzeugt folgende Ausgabe:
</para>
<screen>
<![CDATA[
id: 1000<br>
id: 1001<br>
id: 1002<br>
]]>
</screen>
</example>
AUSGABE:
id: 1000&lt;br&gt;
id: 1001&lt;br&gt;
id: 1002&lt;br&gt;</programlisting>
</example>
<example>
<title>foreach key</title>
<programlisting>
{* Der Schl&uuml;ssel enth&auml;lt den Schl&uuml;ssel des jeweils iterierten Wertes
die Zuweisung sieht wie folgt aus:
$smarty->assign("kontakte", array(array("phone" =&gt; "1", "fax" =&gt; "2", "cell" =&gt; "3"),
array("phone" =&gt; "555-4444", "fax" =&gt; "555-3333", "cell" =&gt; "760-1234")));
*}
<example>
<title>{foreach} - item und key</title>
<programlisting role="php">
<![CDATA[
// Der Schl<68>ssel enth<74>lt den Schl<68>ssel des jeweils iterierten Wertes
// die Zuweisung sieht wie folgt aus:
<?php
$smarty->assign('kontakte', array(
array('phone' => '1',
'fax' => '2',
'cell' => '3'),
array('phone' => '555-4444',
'fax' => '555-3333',
'cell' => '760-1234')
));
?>
]]>
</programlisting>
<programlisting>
<![CDATA[
{foreach name=aussen item=kontakt from=$kontakte}
<hr />
{foreach key=schluessel item=wert from=$kontakt}
{$schluessel}: {$wert}&lt;br&gt;
{$schluessel}: {$wert}<br>
{/foreach}
{/foreach}
</programlisting>
<para>
Das obige Beispiel erzeugt folgende Ausgabe:
</para>
<screen>
<![CDATA[
<hr />
phone: 1<br>
fax: 2<br>
cell: 3<br>
<hr />
phone: 555-4444<br>
fax: 555-3333<br>
cell: 760-1234<br>
]]>
</programlisting>
</example>
AUSGABE:
<example>
<title>{foreach} - Beispiel mit Datenbankzugriff (z.B. PEAR oder ADODB)</title>
<programlisting role="php">
<![CDATA[
<?php
$sql = 'SELECT contact_id, name, nick FROM contacts ORDER BY contact';
$smarty->assign('kontakte', $db->getAssoc($sql));
?>
]]>
</programlisting>
<programlisting>
<![CDATA[
{foreach key=cid item=con from=$kontakte}
<a href="kontact.php?contact_id={$cid}">{$con.name} - {$con.nick}</a><br />
{/foreach}
]]>
</programlisting>
</example>
phone: 1&lt;br&gt;
fax: 2&lt;br&gt;
cell: 3&lt;br&gt;
phone: 555-4444&lt;br&gt;
fax: 555-3333&lt;br&gt;
cell: 760-1234&lt;br&gt;</programlisting>
</example>
<para>
Foreach-Loops haben auch eigene Variablen welche die Foreach
Eigenschaften enthalten. Diese werden wie folgt ausgewiesen:
{$smarty.foreach.foreachname.varname}. foreachname ist der Name der
als <emphasis>name</emphasis> Attribut von Foreach <20>bergeben wurden.
</para>
<para>
Foreach-Loops haben auch eigene Variablen welche die Foreach Eigenschaften enthalten.
Diese werden wie folgt ausgewiesen: {$smarty.foreach.foreachname.varname}. foreachname
ist der Name der als <emphasis>name</emphasis> Attribut von Foreach &uuml;bergeben wurden.
</para>
<sect2 id="foreach.property.iteration">
<title>iteration</title>
<para>
gibt die aktuelle iteration aus
</para>
<para>
iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.
</para>
</sect2>
<sect2 id="foreach.property.iteration">
<title>iteration</title>
<para>
gibt die aktuelle iteration aus
</para>
<para>
iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert.
</para>
</sect2>
<sect2 id="foreach.property.first">
<title>first</title>
<para>
<emphasis>first</emphasis> ist TRUE wenn die aktuelle Iteration die erste ist
</para>
</sect2>
<sect2 id="foreach.property.first">
<title>first</title>
<para>
<emphasis>first</emphasis> ist TRUE wenn die aktuelle Iteration die erste ist
</para>
</sect2>
<sect2 id="foreach.property.last">
<title>last</title>
<para>
<emphasis>last</emphasis> ist TRUE wenn die aktuelle Iteration die letzte ist
</para>
</sect2>
<sect2 id="foreach.property.last">
<title>last</title>
<para>
<emphasis>last</emphasis> ist TRUE wenn die aktuelle Iteration die letzte ist
</para>
</sect2>
<sect2 id="foreach.property.show">
<title>show</title>
<para>
<emphasis>show</emphasis> wird als Parameter von foreach verwedet und ist ein boolscher Wert, TRUE oder FALSE. Auf FALSE wird
nichts ausgegeben und wenn foreachelse gefunden wird, dieser angezeigt.
</para>
</sect2>
<sect2 id="foreach.property.total">
<title>total</title>
<para>
<emphasis>total</emphasis> gibt die Anzahl Iterationen des Foreach Loops aus und kann in- oder nach- Foreach Bl&ouml;cken verwendet werden.
</para>
</sect2>
<sect2 id="foreach.property.show">
<title>show</title>
<para>
<emphasis>show</emphasis> wird als Parameter von foreach verwedet
und ist ein boolscher Wert, TRUE oder FALSE. Auf FALSE wird nichts
ausgegeben und wenn foreachelse gefunden wird, dieser angezeigt.
</para>
</sect2>
<sect2 id="foreach.property.total">
<title>total</title>
<para>
<emphasis>total</emphasis> gibt die Anzahl Iterationen des Foreach
Loops aus und kann in- oder nach- Foreach Bl<42>cken verwendet werden.
</para>
</sect2>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,22 +1,146 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<sect1 id="language.function.if">
<title>if,elseif,else</title>
<para>
'if'-Statements in Smarty erlauben die selbe Flexibilit&auml;t
wie in PHP, bis auf ein paar Erweiterungen f&uuml;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","==","!=","&gt;", "&lt;","&lt;=","&gt;=" sind alles erlaubte Bedingungen,
und m&uuml;ssen von umgebenden Elementen mit Leerzeichen abgetrennt werden.
</para>
<example>
<title>if Anweisung</title>
<programlisting>
<sect1 id="language.function.if">
<title>if,elseif,else</title>
<para>
<emphasis>{if}</emphasis>-Statements in Smarty erlauben die selbe
Flexibilit<69>t wie in PHP, bis auf ein paar Erweiterungen f<EFBFBD>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. Alle PHP Vergleichsoperatoren, wie
<emphasis>||</emphasis>, <emphasis>or</emphasis>,
<emphasis>&amp;&amp;</emphasis>, <emphasis>and</emphasis>, etc. sind
erlaubt.
</para>
<para>
Hier eine Liste der erlaubten Operatoren. Bedingungsoperatoren
m<>ssen von umgebenden Elementen mit Leerzeichen abgetrennt werden.
PHP-<2D>quivalente sind, sofern vorhanden, angeben.
</para>
<informaltable frame="all">
<tgroup cols="5">
<colspec colname="Operator" align="center" />
<colspec colname="Alternativen" align="center" />
<colspec colname="Syntax Beispiel" />
<colspec colname="Bedeutung" />
<colspec colname="PHP <20>quivalent" />
<thead>
<row>
<entry>Operator</entry>
<entry>Alternativen</entry>
<entry>Syntax Beispiel</entry>
<entry>Bedeutung</entry>
<entry>PHP <20>quivalent</entry>
</row>
</thead>
<tbody>
<row>
<entry>==</entry>
<entry>eq</entry>
<entry>$a eq $b</entry>
<entry>ist gleich</entry>
<entry>==</entry>
</row>
<row>
<entry>!=</entry>
<entry>ne, neq</entry>
<entry>$a neq $b</entry>
<entry>ist ungleich</entry>
<entry>!=</entry>
</row>
<row>
<entry>&gt;</entry>
<entry>gt</entry>
<entry>$a gt $b</entry>
<entry>gr<EFBFBD><EFBFBD>er als</entry>
<entry>&gt;</entry>
</row>
<row>
<entry>&lt;</entry>
<entry>lt</entry>
<entry>$a lt $b</entry>
<entry>kleiner als</entry>
<entry>&lt;</entry>
</row>
<row>
<entry>&gt;=</entry>
<entry>gte, ge</entry>
<entry>$a ge $b</entry>
<entry>gr<EFBFBD><EFBFBD>er oder gleich</entry>
<entry>&gt;=</entry>
</row>
<row>
<entry>&lt;=</entry>
<entry>lte, le</entry>
<entry>$a le $b</entry>
<entry>kleiner oder gleich</entry>
<entry>&lt;=</entry>
</row>
<row>
<entry>===</entry>
<entry></entry>
<entry>$a === 0</entry>
<entry>identisch</entry>
<entry>===</entry>
</row>
<row>
<entry>!</entry>
<entry>not</entry>
<entry>not $a</entry>
<entry>Negation</entry>
<entry>!</entry>
</row>
<row>
<entry>%</entry>
<entry>mod</entry>
<entry>$a mod $b</entry>
<entry>Modulo</entry>
<entry>%</entry>
</row>
<row>
<entry>is [not] div by</entry>
<entry></entry>
<entry>$a is not div by 4</entry>
<entry>Ist [nicht] teilbar durch</entry>
<entry>$a % $b == 0</entry>
</row>
<row>
<entry>is [not] even</entry>
<entry></entry>
<entry>$a is not even</entry>
<entry>ist [k]eine gerade Zahl</entry>
<entry>$a % 2 == 0</entry>
</row>
<row>
<entry>is [not] even by</entry>
<entry></entry>
<entry>$a is [not] even by $b</entry>
<entry>[k]eine gerade Gruppierung</entry>
<entry>($a / $b) % 2 == 0</entry>
</row>
<row>
<entry>is [not] odd</entry>
<entry></entry>
<entry>$a is not odd</entry>
<entry>ist [k]eine ungerade Zahl</entry>
<entry>$a % 2 != 0</entry>
</row>
<row>
<entry>is [not] odd by</entry>
<entry></entry>
<entry>$a is not odd by $b</entry>
<entry>[k]eine ungerade Gruppierung</entry>
<entry>($a / $b) % 2 != 0</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<example>
<title>if Anweisung</title>
<programlisting>
<![CDATA[
{* ein Beispiel mit 'eq' (gleich) *}
{if $name eq "Fred"}
Willkommen der Herr.
@@ -45,12 +169,12 @@
{* Klammern sind erlaubt *}
{if ( $anzahl &lt; 0 or $anzahl &gt; 1000 ) and $menge &gt;= #minMengeAmt#}
{if ( $anzahl < 0 or $anzahl > 1000 ) and $menge >= #minMengeAmt#}
...
{/if}
{* einbetten von php Funktionsaufrufen ('gt' steht f&uuml;r 'gr&ouml;sser als') *}
{* einbetten von php Funktionsaufrufen ('gt' steht f<EFBFBD>r 'gr<67>sser als') *}
{if count($var) gt 0}
...
{/if}
@@ -83,7 +207,9 @@
{* 0=gerade, 1=gerade, 2=gerade, 3=ungerade, 4=ungerade, 5=ungerade, etc *}
{if $var is even by 3}
...
{/if}</programlisting>
{/if}
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file

View File

@@ -1,111 +1,120 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<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' &uuml;bergeben werden,
das den Pfad - entweder relativ zu '$trusted_dir' oder absolut -
zum Skript enth&auml;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&uuml;r die Seitennavigation, welche direkt
aus der Datenbank bezogen wird. Die Logik, die den Datenbankinhalt bezieht,
k&ouml;nnen sie in einer eigenen Datei ablegen und am
Anfang Ihres Templates einbinden. Nun k&ouml;nnen Sie das Template
&uuml;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&ouml;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 &uuml;bergeben werden.
Die Ausgabe von <emphasis>include_php</emphasis> wird dann nicht direkt eingef&uuml;gt,
sondern in der durch assign benannten Template-Variable abgelegt.
</para>
<para>
Das Objekt '$smarty' kann in dem eingebundenen PHP-Script &uuml;ber '$this' angesprochen werden.
</para>
<example>
<title>Funktion include_php</title>
<programlisting>
lade_nav.php
-------------
&lt;?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);
?&gt;
index.tpl
---------
<!-- EN-Revision: 1.8 Maintainer: andreas Status: ready -->
<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>
Die Verwendung von {include_php} wird nicht mehr empfohlen, die
gleiche funktionalit<69>t kann auch mit <link
linkend="tips.componentized.templates">Template/Script
Komponenten</link> erreicht werden.
</para>
<para>
Falls <link linkend="variable.security">Sicherheit</link> aktiviert
ist, muss das einzubindende Skript im <link
linkend="variable.trusted.dir">$trusted_dir</link> Pfad
liegen. {include_php} muss das Attribut 'file' <20>bergeben werden, das
den Pfad - entweder relativ zu <link
linkend="variable.trusted.dir">$trusted_dir</link> oder absolut -
zum Skript enth<74>lt.
</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 <20>bergeben
werden. Die Ausgabe von <emphasis>include_php</emphasis> wird dann
nicht direkt eingef<65>gt, sondern in der durch assign benannten
Template-Variable abgelegt.
</para>
<para>
Das Objekt '$smarty' kann in dem eingebundenen PHP-Script <20>ber
'$this' angesprochen werden.
</para>
<example>
<title>Funktion include_php</title>
<para>lade_nav.php</para>
<programlisting>
<![CDATA[
<?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);
?>
]]>
</programlisting>
<para>
Bei folgendem index.tpl:
</para>
<programlisting>
<![CDATA[
{* absoluter Pfad, oder relativ zu '$trusted_dir' *}
{include_php file="/pfad/zu/lade_nav.php"}
{foreach item=$aktuelle_section from=$sections}
&lt;a href="{$aktuelle_section.url}"&gt;{$aktuelle_section.name}&lt;/a&gt;&lt;br&gt;
{/foreach}</programlisting>
</example>
<a href="{$aktuelle_section.url}">{$aktuelle_section.name}</a><br>
{/foreach}
]]>
</programlisting>
</example>
<para>
Siehe auch <link
linkend="language.function.include">{include}</link>, <link
linkend="language.function.php">{php}</link>, <link
linkend="language.function.capture">{capture}</link>, <link
linkend="template.resources">Template Ressourcen</link> and <link
linkend="tips.componentized.templates">Template/Script
Komponenten</link>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,104 +1,130 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
<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 &uuml;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&uuml;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"}
<!-- EN-Revision: 1.8 Maintainer: andreas Status: ready -->
<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 <EFBFBD>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<72>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>
<![CDATA[
<html>
<head>
<title>{$title}</title>
</head>
<body>
{include file="page_header.tpl"}
{* hier kommt der body des Templates *}
{include file="/$tpl_name.tpl"} <-- $tpl_name wird durch eine Wert ersetzt
{include file="footer.tpl"}</programlisting>
</example>
<para>
Sie k&ouml;nnen dem einzubindenden Template Variablen
als Attribute &uuml;bergeben. Alle explizit &uuml;bergebenen
Variablen sind nur im Anwendungsbereich (scope) dieses Template
verf&uuml;gbar. Attribut-Variablen &uuml;berschreiben
aktuelle Template-Variablen, falls sie den gleichen Namen haben.
</para>
<example>
<title>include-Funktion und Variablen &Uuml;bergabe</title>
<programlisting>
{include file="page_footer.tpl"}
</body>
</html>
]]>
</programlisting>
</example>
<para>
Sie k<>nnen dem einzubindenden Template Variablen als Attribute
<20>bergeben. Alle explizit <20>bergebenen Variablen sind nur im
Anwendungsbereich (scope) dieses Template
verf<72>gbar. Attribut-Variablen <20>berschreiben aktuelle
Template-Variablen, falls sie den gleichen Namen haben.
</para>
<example>
<title>include-Funktion und Variablen <20>bergabe</title>
<programlisting>
<![CDATA[
{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&uuml;r Template-Ressourcen bei der 'include'-Funktion</title>
<programlisting>
{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>
<![CDATA[
{* 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 &uuml;bergeben werden) *}
{* absoluter Dateipfad unter Windows ("file:"-Prefix MUSS <EFBFBD>bergeben werden) *}
{include file="file:C:/www/pub/templates/header.tpl"}
{* einbinden aus Template-Ressource namens 'db' *}
{include file="db:header.tpl"}</programlisting>
</example>
{include file="db:header.tpl"}
]]>
</programlisting>
</example>
<para>
Siehe auch
<link linkend="language.function.include.php">{include_php}</link>,
<link linkend="language.function.php">{php}</link>,
<link linkend="template.resources">Template Ressourcen</link> und
<link linkend="tips.componentized.templates">Template/Skript Komponenten</link>.
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables: