mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-08 04:14:27 +02:00
sync with en
This commit is contained in:
@@ -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 & Tricks</title>
|
<title>Tips & 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ö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 "&nbsp;" auszugeben, damit er korrekt angezeigt wird. Damit dafür
|
Standardwert ausgegeben wird - zum Beispiel um im
|
||||||
keine {if} Anweisung verwendet werden muss, gibt es in Smarty eine Abkürzung: die Verwendung des <emphasis>default</emphasis>
|
Tabellenhintergrund "&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>"&nbsp;" ausgeben wenn eine Variable nicht zugewiesen ist</title>
|
<title>"&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:"&nbsp;"}</programlisting>
|
{$titel|default:"&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äufig zum Einsatz kommt,
|
Wenn eine Variable in einem Template h<EFBFBD>ufig zum Einsatz kommt,
|
||||||
kann es ein bisschen störend wirken, den 'default'-Modifikator jedes mal anzuwenden.
|
kann es ein bisschen st<EFBFBD>rend wirken, den <link
|
||||||
Sie kö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ä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öglichkeit, dem eingebundenen Template, Variablen
|
linkend="language.function.include">{include}</link> ein. Was
|
||||||
zu ü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>
|
||||||
<HTML>
|
</para>
|
||||||
<HEAD>
|
<programlisting>
|
||||||
<TITLE>{$title|default:"Nachrichten"}</TITLE>
|
<![CDATA[
|
||||||
</HEAD>
|
<html>
|
||||||
<BODY>
|
<head>
|
||||||
|
<title>{$title|default:"Nachrichten"}</title>
|
||||||
|
</head>
|
||||||
footer.tpl
|
<body>
|
||||||
----------
|
]]>
|
||||||
</BODY>
|
</programlisting>
|
||||||
</HTML></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 ü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önnen, wird der Wert dafü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 ü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ü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öchstmögliche Kontrolle über die Ausgabe
|
Um dem Template Designer h<EFBFBD>chstm<EFBFBD>gliche Kontrolle <EFBFBD>ber die Ausgabe
|
||||||
von Zeitangaben/Daten zu ermöglichen, ist es empfehlenswert Daten immer
|
von Zeitangaben/Daten zu erm<EFBFBD>glichen, ist es empfehlenswert Daten
|
||||||
als Timestamp zu ü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ü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öglich jede Timestamp zu
|
Bemerkung: Seit Smarty 1.4.0 ist es m<EFBFBD>glich jede Timestamp zu
|
||||||
übergeben, welche mit strtotime() ausgewertet werden kann. Dazu
|
<EFBFBD>bergeben, welche mit strtotime() ausgewertet werden kann. Dazu
|
||||||
gehö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öglichkeit den Wert wieder in ein Timestamp-Format zu ä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ä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ü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"}
|
||||||
|
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
|
||||||
|
|
||||||
<!-- neues wml deck -->
|
<!-- neues wml deck -->
|
||||||
<wml>
|
<wml>
|
||||||
<!-- erste karte -->
|
<!-- erste karte -->
|
||||||
<card>
|
<card>
|
||||||
<do type="accept">
|
<do type="accept">
|
||||||
<go href="#zwei"/>
|
<go href="#zwei"/>
|
||||||
</do>
|
</do>
|
||||||
<p>
|
<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...
|
||||||
</p>
|
</p>
|
||||||
</card>
|
</card>
|
||||||
<!-- zweite karte -->
|
<!-- zweite karte -->
|
||||||
<card id="zwei">
|
<card id="zwei">
|
||||||
<p>
|
<p>
|
||||||
Einfach, oder?
|
Einfach, oder?
|
||||||
</p>
|
</p>
|
||||||
</card>
|
</card>
|
||||||
</wml>
|
</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ö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äre es jedoch nicht
|
zum Beispiel einen B<>rsenticker in unserem Template haben, stellen
|
||||||
nett diesen Börsenticker einfach in ein Template einer anderen Applikation
|
wir die Kursinformationen in unserer Anwendung zusammen, weisen
|
||||||
einbinden zu können ohne deren Programmcode zu ä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ö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ö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ändig lauffä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
|
|
||||||
---------------
|
|
||||||
|
|
||||||
<?php
|
|
||||||
// unsere funktion um die börsenkurse zu holen
|
|
||||||
function fetch_ticker($symbol,&$ticker_name,&$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);
|
|
||||||
?>
|
|
||||||
|
|
||||||
|
|
||||||
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
|
||||||
über Webseiten. Um dieses Problem zu bekämpfen, können sie
|
Adressen sammeln, ist <20>ber Webseiten. Um dieses Problem zu
|
||||||
den 'mailto'-Plugin verwenden. Er ä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öglicher
|
Die Codierung mit Javascript ist nicht sehr sicher, da ein
|
||||||
Spammer die Decodierung in sein Sammelprogramm einbauen kö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
|
||||||
|
@@ -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ösung</title>
|
<title>Problemlö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önnen Sie jedoch das Template anschauen um den Fehler zu lokalisieren.
|
Templates. Normalerweise kö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önnen Sie auch das kompilierte Skript ö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önnen Sie auch
|
||||||
|
das kompilierte Skript öffnen und zu der betreffenden
|
||||||
|
Zeilennummer springen um herauszufinden welcher Teil des Templates
|
||||||
den Fehler enthält.
|
den Fehler enthält.
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@@ -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>
|
||||||
|
Reference in New Issue
Block a user