sync with en

This commit is contained in:
messju
2005-06-20 14:44:30 +00:00
parent cef4ae2676
commit 5dc51d227d
3 changed files with 358 additions and 325 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?> <?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.4 Maintainer: andreas Status: ready --> <!-- EN-Revision: 1.9 Maintainer: andreas Status: ready -->
<!-- $Revision$ --> <!-- $Revision$ -->
<chapter id="tips"> <chapter id="tips">
<title>Tips &amp; Tricks</title> <title>Tips &amp; Tricks</title>
@@ -8,15 +8,18 @@
<sect1 id="tips.blank.var.handling"> <sect1 id="tips.blank.var.handling">
<title>Handhabung unangewiesener Variablen</title> <title>Handhabung unangewiesener Variablen</title>
<para> <para>
Manchmal m&ouml;chten Sie vielleicht, dass anstatt einer Leerstelle ein Standardwert ausgegeben wird - zum Manchmal m<EFBFBD>chten Sie vielleicht, dass anstatt einer Leerstelle ein
Beispiel um im Tabellenhintergrund "&amp;nbsp;" auszugeben, damit er korrekt angezeigt wird. Damit daf&uuml;r Standardwert ausgegeben wird - zum Beispiel um im
keine {if} Anweisung verwendet werden muss, gibt es in Smarty eine Abk&uuml;rzung: die Verwendung des <emphasis>default</emphasis> Tabellenhintergrund "&amp;nbsp;" auszugeben, damit er korrekt
Variablen-Modifikators. angezeigt wird. Damit daf<61>r keine <link
linkend="language.function.if">{if}</link> Anweisung verwendet
werden muss, gibt es in Smarty eine Abk<62>rzung: die Verwendung des
<emphasis>default</emphasis> Variablen-Modifikators.
</para> </para>
<example> <example>
<title>"&amp;nbsp;" ausgeben wenn eine Variable nicht zugewiesen ist</title> <title>"&amp;nbsp;" ausgeben wenn eine Variable nicht zugewiesen ist</title>
<programlisting> <programlisting>
<![CDATA[
{* kompliziert *} {* kompliziert *}
{if $titel eq ""} {if $titel eq ""}
@@ -28,96 +31,135 @@
{* einfach *} {* einfach *}
{$titel|default:"&amp;nbsp;"}</programlisting> {$titel|default:"&amp;nbsp;"}
]]>
</programlisting>
</example> </example>
<para>
Siehe auch <link linkend="language.modifier.default">default
(Standardwert)</link> und <link
linkend="tips.default.var.handling">Handhabung von
Standardwerten</link>.
</para>
</sect1> </sect1>
<sect1 id="tips.default.var.handling"> <sect1 id="tips.default.var.handling">
<title>Handhabung von Standardwerten</title> <title>Handhabung von Standardwerten</title>
<para> <para>
Wenn eine Variable in einem Template h&auml;ufig zum Einsatz kommt, Wenn eine Variable in einem Template h<EFBFBD>ufig zum Einsatz kommt,
kann es ein bisschen st&ouml;rend wirken, den 'default'-Modifikator jedes mal anzuwenden. kann es ein bisschen st<EFBFBD>rend wirken, den <link
Sie k&ouml;nnen dies umgehen, indem Sie der Variable mit der <link linkend="language.function.assign">assign</link> Funktion linkend="language.modifier.default"><emphasis>default</emphasis></link>-Modifikator
einen Standardwert zuweisen. jedes mal anzuwenden. Sie k<>nnen dies umgehen, indem Sie der
Variable mit der <link
linkend="language.function.assign">{assign}</link> Funktion einen
Standardwert zuweisen.
</para> </para>
<example> <example>
<title>Zuweisen des Standardwertes einer Variable</title> <title>Zuweisen des Standardwertes einer Variable</title>
<programlisting> <programlisting>
<![CDATA[
{* schreiben sie dieses statement an den Anfang des Templates *} {* schreiben sie dieses statement an den Anfang des Templates *}
{assign var="titel" value=$titel|default:"kein Titel"} {assign var="titel" value=$titel|default:"kein Titel"}
{* fall 'titel' bei der Anweisung leer war, enth&auml;lt es nun den Wert 'kein Titel' wenn Sie es ausgeben *} {* falls 'titel' bei der Anweisung leer war, enth<EFBFBD>lt es nun den Wert
'kein Titel' wenn Sie es ausgeben *}
{$titel} {$titel}
]]>
</programlisting> </programlisting>
</example> </example>
<para>
Siehe auch <link linkend="language.modifier.default">default
(Standardwert)</link> und <link
linkend="tips.blank.var.handling">Handhabung nicht zugewiesener
Variablen</link>.
</para>
</sect1> </sect1>
<sect1 id="tips.passing.vars"> <sect1 id="tips.passing.vars">
<title>Variablen an eingebundene Templates weitergeben</title> <title>Variablen an eingebundene Templates weitergeben</title>
<para> <para>
Wenn die Mehrzahl Ihrer Templates den gleichen Header und Footer verwenden, Wenn die Mehrzahl Ihrer Templates den gleichen Header und Footer
lagert man diese meist in eigene Templates aus und bindet diese ein. Was verwenden, lagert man diese meist in eigene Templates aus und
geschieht aber wenn der Header einen seitenspezifischen Titel haben soll? bindet diese mit<link
Smarty bietet die M&ouml;glichkeit, dem eingebundenen Template, Variablen linkend="language.function.include">{include}</link> ein. Was
zu &uuml;bergeben. geschieht aber wenn der Header einen seitenspezifischen Titel
haben soll? Smarty bietet die M<>glichkeit, dem eingebundenen
Template, Variablen zu <20>bergeben.
</para> </para>
<example> <example>
<title>Die Titel-Variable dem Header-Template zuweisen</title> <title>Die Titel-Variable dem Header-Template zuweisen</title>
<para>
<filename>mainpage.tpl</filename>
</para>
<programlisting> <programlisting>
<![CDATA[
ersteseite.tpl {include file="header.tpl" title="Hauptseite"}
------------
{include file="header.tpl" title="Erste Seite"}
{* template body hier *} {* template body hier *}
{include file="footer.tpl"} {include file="footer.tpl"}
]]>
</programlisting>
archiv.tpl <para>
------------ <filename>archives.tpl</filename>
</para>
<programlisting>
<![CDATA[
{config_load file="archiv.conf"} {config_load file="archiv.conf"}
{include file="header.tpl" title=#archivSeiteTitel#} {include file="header.tpl" title=#archivSeiteTitel#}
{* template body hier *} {* template body hier *}
{include file="footer.tpl"} {include file="footer.tpl"}
]]>
</programlisting>
header.tpl <para>
---------- <filename>header.tpl</filename>
&lt;HTML&gt; </para>
&lt;HEAD&gt; <programlisting>
&lt;TITLE&gt;{$title|default:"Nachrichten"}&lt;/TITLE&gt; <![CDATA[
&lt;/HEAD&gt; <html>
&lt;BODY&gt; <head>
<title>{$title|default:"Nachrichten"}</title>
</head>
footer.tpl <body>
---------- ]]>
&lt;/BODY&gt; </programlisting>
&lt;/HTML&gt;</programlisting> <para>
<filename>footer.tpl</filename>
</para>
<programlisting>
<![CDATA[
</BODY>
</HTML>
]]>
</programlisting>
</example> </example>
<para> <para>
Sobald die erste Seite geparsed wird, wird der Titel 'Erste Seite' Sobald die erste Seite geparsed wird, wird der Titel 'Erste Seite'
dem header.tpl &uuml;bergeben und fortan als Titel verwendet. Wenn dem <filename>header.tpl</filename> <20>bergeben und fortan als Titel
die Archivseite ausgegeben wird, wird der Titel 'Archive' ausgegeben. verwendet. Wenn die Archivseite ausgegeben wird, wird der Titel
Wie Sie sehen k&ouml;nnen, wird der Wert daf&uuml;r aus der Datei 'Archive' ausgegeben. Wie Sie sehen k<EFBFBD>nnen, wird der Wert daf<EFBFBD>r
'archiv.conf' geladen und nicht von einem &uuml;bergebenen Wert. Der aus der Datei <filename>'archiv_page.conf'</filename> geladen und
Standardwert 'Nachrichten' wird verwendet, wenn die '$titel' leer ist. nicht von einem <20>bergebenen Wert. Der Standardwert 'Nachrichten'
Erneut wird daf&uuml;r der <emphasis>default</emphasis>-Modifikator angewandt. wird verwendet, wenn die '$titel' leer ist. Erneut wird daf<61>r der
<link
linkend="language.modifier.default">default</link>-Modifikator
angewandt.
</para> </para>
</sect1> </sect1>
<sect1 id="tips.dates"> <sect1 id="tips.dates">
<title>Zeitangaben</title> <title>Zeitangaben</title>
<para> <para>
Um dem Template Designer h&ouml;chstm&ouml;gliche Kontrolle &uuml;ber die Ausgabe Um dem Template Designer h<EFBFBD>chstm<EFBFBD>gliche Kontrolle <EFBFBD>ber die Ausgabe
von Zeitangaben/Daten zu erm&ouml;glichen, ist es empfehlenswert Daten immer von Zeitangaben/Daten zu erm<EFBFBD>glichen, ist es empfehlenswert Daten
als Timestamp zu &uuml;bergeben. Der Designer kann danach die Funktion immer als Timestamp zu <EFBFBD>bergeben. Der Designer kann danach die
<link linkend="language.modifier.date.format">date_format</link> f&uuml;r Funktion <link
die Formatierung verwenden. linkend="language.modifier.date.format">date_format</link> f<>r die
Formatierung verwenden.
</para> </para>
<para> <para>
Bemerkung: Seit Smarty 1.4.0 ist es m&ouml;glich jede Timestamp zu Bemerkung: Seit Smarty 1.4.0 ist es m<EFBFBD>glich jede Timestamp zu
&uuml;bergeben, welche mit strtotime() ausgewertet werden kann. Dazu <EFBFBD>bergeben, welche mit strtotime() ausgewertet werden kann. Dazu
geh&ouml;ren Unix-Timestamps und MySQL-Timestamps. geh<EFBFBD>ren Unix-Timestamps und MySQL-Timestamps.
</para> </para>
<example> <example>
<title>Die Verwendung von date_format</title> <title>Die Verwendung von date_format</title>
@@ -129,7 +171,6 @@ footer.tpl
<para> <para>
AUSGABE: AUSGABE:
</para> </para>
<screen> <screen>
<![CDATA[ <![CDATA[
Jan 4, 2001 Jan 4, 2001
@@ -157,15 +198,18 @@ AUSGABE:
</programlisting> </programlisting>
</example> </example>
<para> <para>
Falls {html_select_date} in einem Template verwendet wird, hat der Programmierer Falls <link
die M&ouml;glichkeit den Wert wieder in ein Timestamp-Format zu &auml;ndern. Dies linkend="language.function.html.select.date">{html_select_date}</link>
kann zum Beispiel wie folgt gemacht werden: in einem Template verwendet wird, hat der Programmierer die
M<>glichkeit den Wert wieder in ein Timestamp-Format zu
<20>ndern. Dies kann zum Beispiel wie folgt gemacht werden:
</para> </para>
<example> <example>
<title>Formular Datum-Elemente nach Timestamp konvertieren</title> <title>Formular Datum-Elemente nach Timestamp konvertieren</title>
<programlisting> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
// hierbei wird davon ausgegangen, dass Ihre Formular Elemente wie folgt benannt sind // hierbei wird davon ausgegangen, dass Ihre Formular Elemente wie folgt benannt sind
// startDate_Day, startDate_Month, startDate_Year // startDate_Day, startDate_Month, startDate_Year
@@ -173,80 +217,93 @@ $startDate = makeTimeStamp($startDate_Year,$startDate_Month,$startDate_Day);
function makeTimeStamp($year="",$month="",$day="") function makeTimeStamp($year="",$month="",$day="")
{ {
if(empty($year)) if(empty($year)) {
$year = strftime("%Y"); $year = strftime("%Y");
if(empty($month)) }
if(empty($month)) {
$month = strftime("%m"); $month = strftime("%m");
if(empty($day)) }
if(empty($day)) {
$day = strftime("%d"); $day = strftime("%d");
}
return mktime(0, 0, 0, $month, $day, $year); return mktime(0, 0, 0, $month, $day, $year);
} }
]]> ]]>
</programlisting> </programlisting>
</example> </example>
<para>
Siehe auch
<link linkend="language.function.html.select.date">{html_select_date}</link>,
<link linkend="language.function.html.select.time">{html_select_time}</link>,
<link linkend="language.modifier.date.format">date_format</link>
und <link linkend="language.variables.smarty.now">$smarty.now</link>,
</para>
</sect1> </sect1>
<sect1 id="tips.wap"> <sect1 id="tips.wap">
<title>WAP/WML</title> <title>WAP/WML</title>
<para> <para>
WAP/WML Templates verlangen, dass ein Content-Type Header im Template WAP/WML Templates verlangen, dass ein Content-Type Header im
angegeben wird. Der einfachste Weg um dies zu tun, w&auml;re, eine Funktion Template angegeben wird. Der einfachste Weg um dies zu tun, w<EFBFBD>re,
zu schreiben, welche den Header ausgibt. Falls sie den Caching Mechanismus eine Funktion zu schreiben, welche den Header ausgibt. Falls sie
verwenden, sollten Sie auf das 'insert'-Tag zur&uuml;ckgreifen ('insert'-Tags den Caching Mechanismus verwenden, sollten Sie auf das
werden nicht gecached), um ein optimales Ergebnis zu erzielen. Achten Sie darauf, 'insert'-Tag zur<75>ckgreifen ('insert'-Tags werden nicht gecached),
dass vor der Ausgabe des Headers keine Daten an den Client gesendet werden, da um ein optimales Ergebnis zu erzielen. Achten Sie darauf, dass vor
die gesendeten Header-Daten ansonsten von Client verworfen werden. der Ausgabe des Headers keine Daten an den Client gesendet werden,
da die gesendeten Header-Daten ansonsten von Client verworfen
werden.
</para> </para>
<example> <example>
<title>Die verwendung von 'insert' um einen WML Content-Type header zu senden</title> <title>Die verwendung von 'insert' um einen WML Content-Type header zu senden</title>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
<?php <?php
// stellen Sie sicher, dass Apache mit .wml Dateien umgehen kann! // stellen Sie sicher, dass Apache mit .wml Dateien umgehen kann!
// schreiben Sie folgende Funktion in Ihrer Applikation, oder in Smarty.addons.php // schreiben Sie folgende Funktion in Ihrer Applikation, oder in Smarty.addons.php
function insert_header() { function insert_header($params)
// this function expects $content argument {
// folgende Funktion erwartet ein $inhalt argument // folgende Funktion erwartet ein $inhalt argument
extract(func_get_arg(0)); if (empty($params['inhalt'])) {
if(empty($inhalt))
return;
header($inhalt);
return; return;
} }
header($params['inhalt']);
return;
}
?> ?>
]]> ]]>
</programlisting> </programlisting>
<para> <para>
// Ihr Template _muss_ danach wie folgt beginnen: Ihr Template <emphasis>muss</emphasis> danach wie folgt beginnen:
</para> </para>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
{insert name=header inhalt="Content-Type: text/vnd.wap.wml"} {insert name=header inhalt="Content-Type: text/vnd.wap.wml"}
&lt;?xml version="1.0"?&gt; <?xml version="1.0"?>
&lt;!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"&gt; <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
&lt;!-- neues wml deck --&gt; <!-- neues wml deck -->
&lt;wml&gt; <wml>
&lt;!-- erste karte --&gt; <!-- erste karte -->
&lt;card&gt; <card>
&lt;do type="accept"&gt; <do type="accept">
&lt;go href="#zwei"/&gt; <go href="#zwei"/>
&lt;/do&gt; </do>
&lt;p&gt; <p>
Welcome to WAP with Smarty! Welcome to WAP with Smarty!
Willkommen bei WAP mit Smarty! Willkommen bei WAP mit Smarty!
OK klicken um weiterzugehen... OK klicken um weiterzugehen...
&lt;/p&gt; </p>
&lt;/card&gt; </card>
&lt;!-- zweite karte --&gt; <!-- zweite karte -->
&lt;card id="zwei"&gt; <card id="zwei">
&lt;p&gt; <p>
Einfach, oder? Einfach, oder?
&lt;/p&gt; </p>
&lt;/card&gt; </card>
&lt;/wml&gt; </wml>
]]> ]]>
</programlisting> </programlisting>
</example> </example>
@@ -254,35 +311,36 @@ Einfach, oder?
<sect1 id="tips.componentized.templates"> <sect1 id="tips.componentized.templates">
<title>Template/Script Komponenten</title> <title>Template/Script Komponenten</title>
<para> <para>
Dieser Tip ist nicht ausgiebig getestet, aber dennoch eine nette Idee. Verwendung auf eigene Gefahr. ;-)
</para>
<para>
Normalerweise werden Variablen dem Template wie folgt zugewiesen: Normalerweise werden Variablen dem Template wie folgt zugewiesen:
In Ihrer PHP-Applikation werden die Variablen zusammengestellt In Ihrer PHP-Applikation werden die Variablen zusammengestellt
(zum Beispiel mit Datenbankabfragen). Danach kreieren Sie eine (zum Beispiel mit Datenbankabfragen). Danach kreieren Sie eine
Instanz von Smarty, weisen die Variablen zu und geben das Template aus. Instanz von Smarty, weisen die Variablen mit <link
Wenn wir also zum Beispiel einen B&ouml;rsenticker in unserem linkend="api.assign">assign()</link> zu und geben das Template mit
Template haben, stellen wir die Kursinformationen in unserer Anwendung <link linkend="api.display">display()</link> aus. Wenn wir also
zusammen, weisen Sie dem Template zu und geben es aus. W&auml;re es jedoch nicht zum Beispiel einen B<>rsenticker in unserem Template haben, stellen
nett diesen B&ouml;rsenticker einfach in ein Template einer anderen Applikation wir die Kursinformationen in unserer Anwendung zusammen, weisen
einbinden zu k&ouml;nnen ohne deren Programmcode zu &auml;ndern? Sie dem Template zu und geben es aus. W<>re es jedoch nicht nett
diesen B<>rsenticker einfach in ein Template einer anderen
Applikation einbinden zu k<>nnen ohne deren Programmcode zu <20>ndern?
</para> </para>
<para> <para>
Sie k&ouml;nnen PHP-Code mit {php}{/php} in Ihre Templates einbetten. Sie k<EFBFBD>nnen PHP-Code mit {php}{/php} in Ihre Templates einbetten.
So k&ouml;nnen Sie Templates erstellen, welche die Datenstrukturen So k<>nnen Sie Templates erstellen, welche die Datenstrukturen zur
zur Anweisung der eigenen Variablen enthalten. Durch die Bindung von Anweisung der eigenen Variablen enthalten. Durch die Bindung von
Template und Logik entsteht so eine eigenst&auml;ndig lauff&auml;hige Komponente. Template und Logik entsteht so eine eigenst<EFBFBD>ndig lauff<EFBFBD>hige
Komponente.
</para> </para>
<example> <example>
<title>Template/Script Komponenten</title> <title>Template/Script Komponenten</title>
<programlisting> <para>
<filename>function.load_ticker.php</filename> -
Diese Datei geh<65>rt ins <link
linkend="variable.plugins.dir">$plugins directory</link>
</para>
<programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
// drop file "function.load_ticker.php" in plugin directory
// setup our function for fetching stock data // setup our function for fetching stock data
function fetch_ticker($symbol) function fetch_ticker($symbol)
{ {
@@ -291,7 +349,7 @@ function fetch_ticker($symbol)
return $ticker_info; return $ticker_info;
} }
function smarty_function_load_ticker($params, &$smarty) function smarty_function_load_ticker($params, $smarty)
{ {
// call the function // call the function
$ticker_info = fetch_ticker($params['symbol']); $ticker_info = fetch_ticker($params['symbol']);
@@ -302,88 +360,56 @@ function smarty_function_load_ticker($params, &$smarty)
?> ?>
]]> ]]>
</programlisting> </programlisting>
<para>
<filename>index.tpl</filename>
</para>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
index.tpl
---------
{* Smarty *}
{load_ticker symbol="YHOO" assign="ticker"} {load_ticker symbol="YHOO" assign="ticker"}
Stock Name: {$ticker.name} Stock Price: {$ticker.price} Stock Name: {$ticker.name} Stock Price: {$ticker.price}
]]> ]]>
</programlisting> </programlisting>
</example>
<para>
Seit Smarty 1.5.0, gibt es einen noch einfacheren und auch saubereren Weg
in dem man die Logik mit {include_php ...} einbindet. So kann man weiterhin
die Logik vom Design getrennt halten. Mehr Informationen gibt es in der <link linkend="language.function.include.php">include_php</link> Dokumentation.
</para>
<example>
<title>Template/Script Komponenten mit include_php</title>
<programlisting>
load_ticker.php
---------------
&lt;?php
// unsere funktion um die b&ouml;rsenkurse zu holen
function fetch_ticker($symbol,&amp;$ticker_name,&amp;$ticker_price) {
// hier wird $ticker_name und $ticker_price zugewiesen
}
// aufruf der funktion
fetch_ticker("YHOO",$ticker_name,$ticker_price);
// zuweisung der variablen
$this->assign("ticker_name",$ticker_name);
$this->assign("ticker_price",$ticker_price);
?&gt;
index.tpl
---------
{* Smarty *}
{include_php file="load_ticker.php"}
Symbol: {$ticker_name} Preis: {$ticker_price}</programlisting>
</example> </example>
</sect1> </sect1>
<sect1 id="tips.obfuscating.email"> <sect1 id="tips.obfuscating.email">
<title>Verschleierung von E-mail Adressen</title> <title>Verschleierung von E-mail Adressen</title>
<para> <para>
Haben Sie sich auch schon gewundert, wie Ihre E-mail Adresse auf so viele Haben Sie sich auch schon gewundert, wie Ihre E-mail Adresse auf
Spam-Mailinglisten kommt? Ein Weg, wie Spammer E-mail Adressen sammeln, ist so viele Spam-Mailinglisten kommt? Ein Weg, wie Spammer E-mail
&uuml;ber Webseiten. Um dieses Problem zu bek&auml;mpfen, k&ouml;nnen sie Adressen sammeln, ist <20>ber Webseiten. Um dieses Problem zu
den 'mailto'-Plugin verwenden. Er &auml;ndert die Zeichenfolge mit Javascript bek<65>mpfen, k<>nnen sie den 'mailto'-Plugin verwenden. Er <EFBFBD>ndert
so, dass sie im HTML Quellcode nicht lesbar ist, jedoch von jedem Browser die Zeichenfolge mit Javascript so, dass sie im HTML Quellcode
wieder zusammengesetzt werden kann. Den 'mailto'-Plugin gibt es im Smarty-Repository nicht lesbar ist, jedoch von jedem Browser wieder zusammengesetzt
auf http://smarty.php.net. Laden sie den Plugin herunter und speichern Sie ihn im werden kann. Den <link
'plugins' Verzeichnis. linkend="language.function.mailto">{mailto}</link>-Plugin gibt es
im Smarty-Repository auf http://smarty.php.net. Laden sie den
Plugin herunter und speichern Sie ihn im 'plugins' Verzeichnis.
</para> </para>
<example> <example>
<title>Beispiel von verschleierung von E-mail Adressen</title> <title>Beispiel von verschleierung von E-mail Adressen</title>
<programlisting> <programlisting>
{* in index.tpl *}
index.tpl Anfragen bitte an
---------
Fragen bitte an
{mailto address=$EmailAddress encode="javascript" subject="Hallo"} {mailto address=$EmailAddress encode="javascript" subject="Hallo"}
senden senden
</programlisting> </programlisting>
</example> </example>
<note> <note>
<title>Technische Details</title> <title>Technische Details</title>
<para> <para>
Die Codierung mit Javascript ist nicht sehr sicher, da ein m&ouml;glicher Die Codierung mit Javascript ist nicht sehr sicher, da ein
Spammer die Decodierung in sein Sammelprogramm einbauen k&ouml;nnte. Es wird jedoch damit m<>glicher Spammer die Decodierung in sein Sammelprogramm
gerechnet, dass, da Aufwand und Ertrag sich nicht decken, dies nicht oft der Fall ist. einbauen k<>nnte. Es wird jedoch damit gerechnet, dass, da
Aufwand und Ertrag sich nicht decken, dies nicht oft der Fall
ist.
</para> </para>
</note> </note>
<para>
Siehe auch <link linkend="language.modifier.escape">escape</link>
und <link linkend="language.function.mailto">{mailto}</link>.
</para>
</sect1> </sect1>
</chapter> </chapter>
<!-- Keep this comment at the end of the file <!-- Keep this comment at the end of the file

View File

@@ -1,30 +1,33 @@
<?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.4 Maintainer: andreas Status: ready -->
<chapter id="troubleshooting"> <chapter id="troubleshooting">
<title>Probleml&ouml;sung</title> <title>Probleml&ouml;sung</title>
<para></para> <para></para>
<sect1 id="smarty.php.errors"> <sect1 id="smarty.php.errors">
<title>Smarty/PHP Fehler</title> <title>Smarty/PHP Fehler</title>
<para> <para>
Smarty kann verschiedene Fehler-Typen, wie fehlende Tag-Attribute oder syntaktisch falsche Variablen-Namen abfangen. Wenn dies geschieht, wird Ihnen eine Fehlermeldung ausgegeben. Beispiel: Smarty kann verschiedene Fehler-Typen, wie fehlende Tag-Attribute
oder syntaktisch falsche Variablen-Namen abfangen. Wenn dies
geschieht, wird Ihnen eine Fehlermeldung ausgegeben. Beispiel:
</para> </para>
<example> <example>
<title>Smarty Fehler</title> <title>Smarty Fehler</title>
<programlisting> <screen>
<![CDATA[
Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah' Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
in /path/to/smarty/Smarty.class.php on line 1041 in /path/to/smarty/Smarty.class.php on line 1041
Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
in /path/to/smarty/Smarty.class.php on line 1041</programlisting> in /path/to/smarty/Smarty.class.php on line 1041</programlisting>
]]>
</screen>
</example> </example>
<para> <para>
In der ersten Zeile zeigt Smarty den Template-Namen, die Zeilennummer In der ersten Zeile zeigt Smarty den Template-Namen, die
und den Fehler an. Darauf folgt die betroffene Zeile in der Smarty Klasse welche den Fehler erzeugt hat. Zeilennummer und den Fehler an. Darauf folgt die betroffene Zeile
in der Smarty Klasse welche den Fehler erzeugt hat.
</para> </para>
<para> <para>
Es gibt gewisse Fehlerkonditionen, die Smarty nicht abfangen kann (bsp: fehlende End-Tags). Diese Fehler Es gibt gewisse Fehlerkonditionen, die Smarty nicht abfangen kann (bsp: fehlende End-Tags). Diese Fehler
resultieren jedoch normalerweise in einem PHP-'compile-time' Fehler. resultieren jedoch normalerweise in einem PHP-'compile-time' Fehler.
@@ -32,18 +35,22 @@ Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
<example> <example>
<title>PHP Syntaxfehler</title> <title>PHP Syntaxfehler</title>
<programlisting> <screen>
<![CDATA[
Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75</programlisting> Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75</programlisting>
]]>
</screen>
</example> </example>
<para> <para>
Wenn ein PHP Syntaxfehler auftritt, wird Ihnen die Zeilennummer des Wenn ein PHP Syntaxfehler auftritt, wird Ihnen die Zeilennummer
betroffenen PHP Skriptes ausgegeben, nicht die des Templates. Normalerweise des betroffenen PHP Skriptes ausgegeben, nicht die des
k&ouml;nnen Sie jedoch das Template anschauen um den Fehler zu lokalisieren. Templates. Normalerweise k&ouml;nnen Sie jedoch das Template
Schauen sie insbesondere auf Folgendes: fehlende End-Tags in einer {if}{/if} Anweisung anschauen um den Fehler zu lokalisieren. Schauen sie insbesondere
oder in einer {section}{/section} und die Logik eines {if} Blocks. Falls Sie den Fehler auf Folgendes: fehlende End-Tags in einer {if}{/if} Anweisung oder
so nicht finden, k&ouml;nnen Sie auch das kompilierte Skript &ouml;ffnen und zu der in einer {section}{/section} und die Logik eines {if}
betreffenden Zeilennummer springen um herauszufinden welcher Teil des Templates Blocks. Falls Sie den Fehler so nicht finden, k&ouml;nnen Sie auch
das kompilierte Skript &ouml;ffnen und zu der betreffenden
Zeilennummer springen um herauszufinden welcher Teil des Templates
den Fehler enth&auml;lt. den Fehler enth&auml;lt.
</para> </para>
</sect1> </sect1>

View File

@@ -15,7 +15,7 @@
<entry>Parameter Position</entry> <entry>Parameter Position</entry>
<entry>Typ</entry> <entry>Typ</entry>
<entry>Ben<EFBFBD>tigt</entry> <entry>Ben<EFBFBD>tigt</entry>
<entry>Vorgabe</entry> <entry>Standardwert</entry>
<entry>Beschreibung</entry> <entry>Beschreibung</entry>
</row> </row>
</thead> </thead>