mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-04 18:34:27 +02:00
all updated for 2.6.0 release, translated everything from 2_5_0 branch to 20030908
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -72,11 +72,36 @@
|
||||
|
||||
<sect1 id="installing.smarty.basic">
|
||||
<title>Basis Installation</title>
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Installieren Sie die Smarty Library Dateien aus dem /libs/ Verzeichnis
|
||||
der Distribution. Diese PHP Dateien sollten NICHT angepasst werden. Sie
|
||||
werden zwischen den verschieden Applikationen die Smarty verwenden geteilt.
|
||||
Diese Dateien werden bei einem upgrade ersetzt.
|
||||
Dieser Leitfaden geht davon aus, dass Sie Ihr Webserver- und PHP-Setup kennen
|
||||
und mit den Namenskonventionen für Dateien und Verzeichnisse Ihres Betriebssystems
|
||||
vertraut sind. Im Folgenden wird ein Unix-Dateisystem verwendet, stellen Sie also
|
||||
sicher, dass sie die für Ihr Betriebssystem nötigen Änderungen vornehmen.
|
||||
</para>
|
||||
<para>
|
||||
Das Beispiel geht davon aus, dass '/php/includes' in Ihrem PHP-'include_path'
|
||||
liegt. Konsultieren Sie das PHP-Manual für weiterführende Informationen hierzu.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Installieren Sie als erstes die Smarty-Library Dateien. Diese Dateien
|
||||
sollten von Ihnen NICHT editiert und von allen Applikationen
|
||||
verwendet werden. Sie werden nur erneuert, wenn Sie eine neue Version von Smarty installieren.
|
||||
</para>
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Wir empfehlen keine Änderungen an den Smarty-Library Dateien vorzunehmen.
|
||||
Dies macht ein mögliches Upgrade wesentlich einfacher. Sie müssen
|
||||
diese Dateien auch nicht anpassen, um Smarty zu konfigurieren! Benutzen Sie f<>r
|
||||
diesen Zwecke eine Instanz der Smarty-Klasse.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
Folgende Library Dateien werden mit Smarty geliefert und werden benötigt:
|
||||
</para>
|
||||
<example>
|
||||
<title>Smarty-Library Dateiliste</title>
|
||||
@@ -85,93 +110,106 @@ Smarty.class.php
|
||||
Smarty_Compiler.class.php
|
||||
Config_File.class.php
|
||||
debug.tpl
|
||||
/plugins/*.php (alle Dateien!)</screen>
|
||||
/core/*.php (alle)
|
||||
/plugins/*.php (alle)</screen>
|
||||
</screen>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
Smarty verwendet eine PHP Konstante namens <link linkend="constant.smarty.dir">SMARTY_DIR</link>
|
||||
die den Systempfad zu den Library Dateien enthält. Wenn Ihre Applikation keine
|
||||
Probleme hat die Library Dateien zu finden, müssen Sie diese Konstante nicht zuweisen,
|
||||
und Smarty wird alle benötigten Dateien finden. Falls <emphasis>Smarty.class.php</emphasis>
|
||||
nicht in Ihrem 'include_path' ist und Sie nicht den absoluten Pfad angeben, müssen Sie
|
||||
SMARTY_DIR manuell zuweisen. SMARTY_DIR <emphasis>must</emphasis> muss mit einem '/'-Zeichen (slash) enden.
|
||||
Sie können diese Dateien entweder in Ihrem PHP-'include_path' oder
|
||||
auch in irgend einem anderen Verzeichnis ablegen, solange die Konstante
|
||||
<link linkend="constant.smarty.dir">SMARTY_DIR</link> auf den korrekten
|
||||
Pfad zeigt. Im Folgenden werden Beispiele für beide Fälle aufgezeigt.
|
||||
</para>
|
||||
<para>
|
||||
So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript:
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Smarty Instanz aus 'include_path' erstellen:</title>
|
||||
<title>Smarty Instanz erstellen:</title>
|
||||
<screen>
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
Versuchen Sie das oben gezeigte Script auszuführen. Wenn Sie einen Fehler erhalten ('<emphasis>Smarty.class.php</emphasis> file could not be found'),
|
||||
müssen Sie wie folgt vorgehen:
|
||||
</para>
|
||||
<para>
|
||||
Versuchen Sie das Skript auszuführen. Wenn Sie eine Fehlermeldung erhalten dass
|
||||
<emphasis>Smarty.class.php</emphasis> nicht gefunden werden konnte, versuchen Sie folgendes:
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Übergeben Sie den vollen Pfad</title>
|
||||
<screen>
|
||||
require('/usr/local/lib/php/Smarty/Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Absoluter Pfad übergeben</title>
|
||||
<screen>
|
||||
require('/usr/local/lib/php/Smarty/Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Fügen Sie den Library Pfad Ihrem PHP-'include_path' hinzu</title>
|
||||
<screen>
|
||||
// Editieren Sie die php.ini Datei und fügen Sie den Library Pfad Ihrem PHP-'include_path' hinzu
|
||||
// Danach sollte folgendes funktionieren.
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
<example>
|
||||
<title>Library Verzeichnis dem Include-Pfad hinzufügen</title>
|
||||
<screen>
|
||||
// editieren Sie php.ini, fügen Sie das Smarty
|
||||
// Verzeichnis Ihrem include_path hinzu, und starten Sie den Webserver neu
|
||||
// Danach sollte folgendes Funktionieren.
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Setzen Sie SMARTY_DIR manuell</title>
|
||||
<screen>
|
||||
<example>
|
||||
<title>SMARTY_DIR manuell setzen</title>
|
||||
<screen>
|
||||
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
|
||||
require(SMARTY_DIR.'Smarty.class.php');
|
||||
$smarty = new Smarty;</screen>
|
||||
</example>
|
||||
</example>
|
||||
|
||||
|
||||
<para>
|
||||
Jetzt, wo die Library Dateien an ihrem Platz sind, wird es
|
||||
Zeit, die Smarty Verzeichnisse zu erstellen. Smarty benötigt 4 Verzeichnisse
|
||||
welche (normerweise) <emphasis>templates</emphasis>, <emphasis>templates_c</emphasis>, <emphasis>configs</emphasis>
|
||||
und <emphasis>cache</emphasis> heissen. Jedes kann jedoch über die
|
||||
Smarty Attribute <emphasis>$template_dir</emphasis>, <emphasis>$compile_dir</emphasis>, <emphasis>$config_dir</emphasis>,
|
||||
und <emphasis>$cache_dir</emphasis> definiert werden. Es wird empfohlen für jede Applikation die Smarty verwenden
|
||||
soll eigene Verzeichnisse einzurichten.
|
||||
Zeit, die Smarty Verzeichnisse zu erstellen.
|
||||
</para>
|
||||
<para>
|
||||
Stellen Sie sicher dass Sie die DocumentRoot Ihres Webservers kennen.
|
||||
In unserem Beispiel verwenden wir "/web/www.mydomain.com/docs/". Alle
|
||||
Smarty-Verzeichnisse werden immer nur von Smarty aufgerufen, nie vom Browser
|
||||
direkt. Deshalb wird empfohlen diese Verzeichnisse <emphasis>ausserhalb</emphasis>
|
||||
der DocumentRoot einzurichten.
|
||||
Für unser Beispiel werden wir die Smarty Umgebung für eine
|
||||
Gästebuch-Applikation konfigurieren. Wir verwenden den Applikationsnamen
|
||||
nur, um die Verzeichnis-Struktur zu verdeutlichen. Sie können die selbe
|
||||
Umgebung für alle Ihre Applikationen verwenden indem Sie 'guestbook'
|
||||
durch dem Namen Ihrer Applikation ersetzen.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Für unser installations-Beispiel werden wir die Umgebung für eine
|
||||
Gästebuchapplikation einrichten. Wir verwenden dies nur als Beispiel,
|
||||
falls Sie ihre eigene Applikationsumgebung einrichten, ersetzen sie '/guestbook/'
|
||||
einfach durch den Namen Ihrer eigener Applikation. Unsere Dateien werden unter
|
||||
"/web/www.mydomain.com/smarty/guestbook/" abgelegt.
|
||||
|
||||
Stellen Sie sicher, dass Sie die DocumentRoot Ihres Webservers kennen.
|
||||
In unserem Beispiel lautet sie '/web/www.domain.com/docs/'.
|
||||
</para>
|
||||
<para>
|
||||
Die Smarty Verzeichnisse werden in den Klassen-Variablen $template_dir,
|
||||
$compile_dir, $config_dir und $cache_dir definiert. Die Standardwerte sind:
|
||||
"templates", "templates_c", "configs" und "cache". Für unser Beispiel
|
||||
legen wir alle diese Verzeichnisse unter '/web/www.domain.com/smarty/guestbook/' an.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen,
|
||||
um mögliche Direktzugriffe zu verhindern.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
In Ihrer DocumentRoot muss mindestens eine Datei liegen, die für Browser
|
||||
zugänglich ist. Wir nennen dieses Skript 'index.php', und legen
|
||||
es in das Verzeichnis '/guestbook/' in unserer DocumentRoot.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Bequem ist es, den Webserver so zu konfigurieren, dass 'index.php' als
|
||||
Standard-Verzeichnis-Index verwendet wird. Somit kann man das Skript
|
||||
direkt mit 'http://www.domain.com/guestbook/' aufrufen. Falls Sie Apache
|
||||
verwenden, lässt sich dies konfigurieren indem Sie 'index.php'
|
||||
als letzten Eintrag für DirectoryIndex verwenden. (Jeder Eintrag muss
|
||||
mit einem Leerzeichen abgetrennt werden).
|
||||
</para>
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
Die Dateistruktur bis jetzt:
|
||||
@@ -185,6 +223,7 @@ $smarty = new Smarty;</screen>
|
||||
/usr/local/lib/php/Smarty/Config_File.class.php
|
||||
/usr/local/lib/php/Smarty/debug.tpl
|
||||
/usr/local/lib/php/Smarty/plugins/*.php
|
||||
/usr/local/lib/php/Smarty/core/*.php
|
||||
|
||||
/web/www.mydomain.com/smarty/guestbook/templates/
|
||||
/web/www.mydomain.com/smarty/guestbook/templates_c/
|
||||
@@ -194,11 +233,21 @@ $smarty = new Smarty;</screen>
|
||||
/web/www.mydomain.com/docs/guestbook/index.php</screen>
|
||||
</example>
|
||||
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Falls Sie kein Caching und keine Konfigurationsdateien verwenden, ist es nicht
|
||||
erforderlich die Verzeichnisse '$config_dir' und '$cache_dir' zu erstellen.
|
||||
Es wird jedoch trotzdem empfohlen, da diese Funktionalitäten eventuell später
|
||||
genutzt werden sollen.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
Smarty benötigt Schreibzugriff auf die Verzeichnisse '$compile_dir' und '$cache_dir'.
|
||||
Stellen Sie also sicher, dass der Webserver-Benutzer (normalerweise Benutzer 'nobody' und Gruppe 'nogroup')
|
||||
in diese Verzeichnisse schreiben kann. (In OS X lautet der Benutzer normalerweise 'web' und
|
||||
ist in der Gruppe 'web'). Wenn Sie Apache verwenden, können Sie in der httpd.conf (gew<65>hnlich in '/usr/local/apache/conf/')
|
||||
in diese Verzeichnisse schreiben kann. (In OS X lautet der Benutzer normalerweise 'www' und
|
||||
ist in der Gruppe 'www'). Wenn Sie Apache verwenden, können Sie in der httpd.conf (gew<65>hnlich in '/usr/local/apache/conf/')
|
||||
nachsehen, unter welchem Benutzer Ihr Server läuft.
|
||||
</para>
|
||||
|
||||
@@ -206,11 +255,11 @@ $smarty = new Smarty;</screen>
|
||||
<title>Dateirechte einrichten</title>
|
||||
<screen>
|
||||
|
||||
chown nobody:nobody /web/www.mydomain.com/smarty/templates_c/
|
||||
chmod 770 /web/www.mydomain.com/smarty/templates_c/
|
||||
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/templates_c/
|
||||
chmod 770 /web/www.mydomain.com/smarty/guestbook/templates_c/
|
||||
|
||||
chown nobody:nobody /web/www.mydomain.com/smarty/cache/
|
||||
chmod 770 /web/www.mydomain.com/smarty/cache/</screen>
|
||||
chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/
|
||||
chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/</screen>
|
||||
</example>
|
||||
|
||||
<note>
|
||||
@@ -229,7 +278,7 @@ chmod 770 /web/www.mydomain.com/smarty/cache/</screen>
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Editieren von /web/www.mydomain.com/smarty/templates/index.tpl</title>
|
||||
<title>Editieren von /web/www.mydomain.com/smarty/guestbook/templates/index.tpl</title>
|
||||
<screen>
|
||||
|
||||
{* Smarty *}
|
||||
@@ -252,17 +301,14 @@ Hallo, {$name}!</screen>
|
||||
<para>
|
||||
Als nächstes editieren wir die Datei 'index.php'. Wir erzeugen eine
|
||||
Smarty-Instanz, weisen dem Template eine Variable zu und geben 'index.tpl' aus.
|
||||
In unserem Beispiel ist '/usr/local/lib/php/Smarty' in unserem PHP-'include_path',
|
||||
stellen Sie sicher dass dies bei Ihrer Installation auch der Fall ist, oder
|
||||
verwenden Sie ansonsten aboslute Pfade.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title>Editieren von /web/www.mydomain.com/docs/guestbook/index.php</title>
|
||||
<screen>
|
||||
|
||||
// Smarty laden
|
||||
require('Smarty.class.php');
|
||||
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
|
||||
require(SMARTY_DIR.'Smarty.class.php');
|
||||
|
||||
$smarty = new Smarty;
|
||||
|
||||
@@ -306,8 +352,7 @@ $smarty->display('index.tpl');</screen>
|
||||
eine eigene Smarty-Umgebung zu initialisieren. Anstatt immer wieder
|
||||
die Verzeichnisse zu definieren, kann diese Aufgabe auch in einer einzigen
|
||||
Datei erledigt werden. Beginnen wir, indem wir ein neues Verzeichnis namens '/php/includes/guestbook/'
|
||||
erstellen und eine Datei namens 'setup.php' darin anlegen. In unserem Beispiel ist '/php/includes'
|
||||
im PHP-'include_path'. Stellen Sie sicher dass das auch bei Ihnen der Fall ist, oder benutzen Sie absolute Pfadnamen.
|
||||
erstellen und eine Datei namens 'setup.php' darin anlegen.
|
||||
</para>
|
||||
|
||||
<example>
|
||||
@@ -315,9 +360,10 @@ $smarty->display('index.tpl');</screen>
|
||||
<screen>
|
||||
|
||||
// Smarty Library Dateien laden
|
||||
define('SMARTY_DIR','/usr/local/lib/php/Smarty/');
|
||||
require(SMARTY_DIR.'Smarty.class.php');
|
||||
|
||||
// steup.php ist auch ein guter Platz um Applikations spezifische Libraries zu laden
|
||||
// ein guter Platz um Applikations spezifische Libraries zu laden
|
||||
// require('guestbook/guestbook.lib.php');
|
||||
|
||||
class Smarty_GuestBook extends Smarty {
|
||||
@@ -341,6 +387,18 @@ class Smarty_GuestBook extends Smarty {
|
||||
}</screen>
|
||||
</example>
|
||||
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
In unserem Beispiel werden die Library Dateien ausserhalb der DocumentRoot
|
||||
abgelegt. Diese Dateien könnten sensitive Informationen enthalten,
|
||||
die wir nicht zugänglich machen möchten.
|
||||
Deshalb legen wir alle Library Dateien in '/php/includes/guestbook/' ab
|
||||
und laden sie in unserem 'setup.php' Skript, wie Sie im oben gezeigten
|
||||
Beispiel sehen können.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
Nun passen wir 'index.php' an, um 'setup.php' zu verwenden:
|
||||
</para>
|
||||
|
@@ -30,7 +30,7 @@
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<edition>Version 2.5</edition>
|
||||
<edition>Version 2.0</edition>
|
||||
<copyright>
|
||||
<year>2001</year>
|
||||
<year>2002</year>
|
||||
|
@@ -390,6 +390,20 @@
|
||||
Normalerweise '}'.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.show.info.header">
|
||||
<title>$show_info_header</title>
|
||||
<para>
|
||||
Gibt am Anfang der HTML-Seite die Smarty Version und das Kompilier-Datum des Templates
|
||||
als Kommentar aus. Normalerweise 'false'.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.show.info.include">
|
||||
<title>$show_info_include</title>
|
||||
<para>
|
||||
Gibt am Anfang und am Ende jedes eingebundenen Templates einen HTML-Kommentar aus.
|
||||
Normalerweise 'false'.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.compiler.class">
|
||||
<title>$compiler_class</title>
|
||||
<para>
|
||||
@@ -405,6 +419,16 @@
|
||||
Verhält sich wie 'variables_order' in der php.ini.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.request.use.auto.globals">
|
||||
<title>$request_use_auto_globals</title>
|
||||
<para>
|
||||
Definiert ob Smarty php's $HTTP_*_VARS[] ($request_use_auto_globals=false welches
|
||||
der Standardwert ist) oder $_*[] ($request_use_auto_globals=true) verwenden soll.
|
||||
Dies betrifft Templates die {$smarty.request.*}, {$smarty.get.*}, etc... verwenden.
|
||||
Achtung: wenn $request_use_auto_globals auf TRUE gesetzt ist, hat <link linkend="variable.request.vars.order">variable.request.vars.order </link>
|
||||
keine Auswirkungen, da php's Konfigurationswert <literal>gpc_order</literal> verwendet wird.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.compile.id">
|
||||
<title>$compile_id</title>
|
||||
<para>
|
||||
@@ -428,10 +452,20 @@
|
||||
Definiert ein Array von Variablen-Modifikatoren, die auf jeder Variable anzuwenden sind.
|
||||
Wenn Sie zum Beispiel alle Variablen standardmässig HTML-Maskieren wollen,
|
||||
können Sie array('escape:"htmlall"'); verwenden. Um eine Variable von dieser
|
||||
Behandlung auszuschliessen, können Sie ihr den Modifikator 'nodefaults' übergeben.
|
||||
Behandlung auszuschliessen, können Sie ihr den Parameter 'smarty' mit dem Modifikator 'nodefaults'
|
||||
übergeben. Als Beispiel: {$var|smarty:nodefaults}.
|
||||
Zum Beispiel: {$var|nodefaults}.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="variable.default.resource.type">
|
||||
<title>$default_resource_type</title>
|
||||
<para>
|
||||
Definiert den Ressourcentyp der von Smarty implizitverwendet werden soll. Standartwert
|
||||
ist 'file', was dazu führt dass $smarty->display('index.tpl'); und
|
||||
$smarty->display('file:index.tpl'); identisch sind. Konsultieren Sie das
|
||||
<link linkend="template.resources">Resource</link> Kapitel für weitere Informationen.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
<chapter id="api.functions">
|
||||
<title>Methoden</title>
|
||||
@@ -447,27 +481,12 @@
|
||||
<paramdef>string <parameter>varname</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>var</parameter></paramdef>
|
||||
</funcprototype>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>append</function></funcdef>
|
||||
<paramdef>string <parameter>varname</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>var</parameter></paramdef>
|
||||
<paramdef>boolean <parameter>merge</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um an Template-Variablen weitere Daten anzuhängen. Sie
|
||||
können entweder ein Namen/Wert-Paar oder assoziative Arrays,
|
||||
die mehrere Namen/Wert-Paare enthalten, übergeben. Wenn Sie als dritten Parameter
|
||||
'true' übergeben werden die beiden Arrays zusammengefügt.
|
||||
die mehrere Namen/Wert-Paare enthalten, übergeben.
|
||||
</para>
|
||||
<note>
|
||||
<title>Technical Note</title>
|
||||
<para>
|
||||
Der Parameter 'merge' überschreibt bestehende Schlüssel, falls
|
||||
im zweiten Array die selben Schlüssel wie im ersten vorkommen.
|
||||
Diese Funktion ist ungelich 'array_merge()' aus PHP.
|
||||
</para>
|
||||
</note>
|
||||
<example>
|
||||
<title>append (anhängen)</title>
|
||||
<programlisting>
|
||||
@@ -488,27 +507,20 @@
|
||||
<paramdef>string <parameter>varname</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>var</parameter></paramdef>
|
||||
</funcprototype>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>append_by_ref</function></funcdef>
|
||||
<paramdef>string <parameter>varname</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>var</parameter></paramdef>
|
||||
<paramdef>boolean <parameter>merge</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie
|
||||
anzuhängen. Wenn Sie eine Variable via Referenz anhängen und sie nachträglich
|
||||
geändert wird, wird auch der angehängte Wert geändert. Bei Objekten kann so
|
||||
das kopieren derselben vermieden werden. Konsultieren Sie das PHP-Manual betreffend Variablenreferenzierung
|
||||
für weitere Erklärungen. Wenn Sie als dritten Parameter 'true' übergeben wird das anzuhängende Array
|
||||
mit dem bestehenden zusammengef¨gt.
|
||||
anzuhängen. Konsultieren Sie das PHP-Manual zum Thema 'variable referencing'
|
||||
für weitere Erklärungen.
|
||||
</para>
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Der Parameter 'merge' überschreibt bestehende Schlüssel, falls
|
||||
im zweiten Array die selben Schlüssel wie im ersten vorkommen.
|
||||
Diese Funktion ist ungelich 'array_merge()' aus PHP.
|
||||
'append_by_ref()' ist effizienter als 'append()', da keine Kopie der Variable
|
||||
erzeugt, sondern auf die Variable im Speicher referenziert wird. Beachten Sie
|
||||
dabei, dass eine nachträgliche änderung Original-Variable auch die zugewiesene Variable
|
||||
ändert. PHP5 wird die Referenzierung automatisch übernehmen, diese
|
||||
Funktion dient als Workaround.
|
||||
</para>
|
||||
</note>
|
||||
<example>
|
||||
@@ -567,11 +579,11 @@
|
||||
<note>
|
||||
<title>Technical Note</title>
|
||||
<para>
|
||||
Wird verwendet, um an Template-Variablen Werte via Referenz (pass by reference) anstatt via Kopie
|
||||
anzuhängen. Wenn Sie eine Variable via Referenz anhängen und sie nachträglich
|
||||
geändert wird, wird auch der angehängte Wert geändert. Bei Objekten kann so
|
||||
das kopieren derselben vermieden werden. Konsultieren Sie das PHP-Manual betreffend Variablenreferenzierung
|
||||
für weitere Erklärungen.
|
||||
'assign_by_ref()' ist effizienter als 'assign()', da keine Kopie der Variable
|
||||
erzeugt wird, sondern auf die Variable im Speicher referenziert wird. Beachten Sie
|
||||
dabei, dass eine nachträgliche änderung Original-Variable auch die zugewiesene Variable
|
||||
ändert. PHP5 wird die Referenzierung automatisch übernehmen, diese
|
||||
Funktion dient als Workaround.
|
||||
</para>
|
||||
</note>
|
||||
<example>
|
||||
@@ -853,80 +865,27 @@
|
||||
echo $output;</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="api.get.config.vars">
|
||||
<title>get_config_vars</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>array <function>get_config_vars</function></funcdef>
|
||||
<paramdef>string <parameter><optional>varname</optional></parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Gibt die definierte Variable aus einer Konfigurationsdatei zurück,
|
||||
wenn kein Parameter übergeben wird, wird ein Array aller Variablen
|
||||
zurückgegeben.
|
||||
</para>
|
||||
<example>
|
||||
<title>get_config_vars</title>
|
||||
<programlisting>
|
||||
// Vriable 'foo' aus Konfigurationsdatei lesen
|
||||
$foo = $smarty->get_config_vars('foo');
|
||||
|
||||
// alle Variablen aus der Konfigurationsdatei lesen
|
||||
$config_vars = $smarty->get_config_vars();
|
||||
|
||||
// ausgeben
|
||||
print_r($config_vars);</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="api.get.registered.object">
|
||||
<title>get_registered_object</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>array <function>get_registered_object</function></funcdef>
|
||||
<paramdef>string <parameter>object_name</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
This returns a reference to a registered object. This is useful
|
||||
from within a custom function when you need direct access to a
|
||||
registered object.
|
||||
</para>
|
||||
<example>
|
||||
<title>get_registered_object</title>
|
||||
<programlisting>
|
||||
function smarty_block_foo($params, &$smarty) {
|
||||
if (isset[$params['object']]) {
|
||||
// get reference to registered object
|
||||
$obj_ref =& $smarty->&get_registered_object($params['object']);
|
||||
// use $obj_ref is now a reference to the object
|
||||
}
|
||||
}</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="api.get.template.vars">
|
||||
<title>get_template_vars (Template-Variablen extrahieren)</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>array <function>get_template_vars</function></funcdef>
|
||||
<paramdef>string <parameter><optional>varname</optional></parameter></paramdef>
|
||||
<paramdef><parameter></parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Gibt den Wert der übergebenen Template-Variable zurück. Wenn kein Parameter
|
||||
übergeben wird, besteht die Rückgabe aus einem Array aller zugewiesener Variablen.
|
||||
Gibt ein Array der zugewiesenen Template-Variablen zurück.
|
||||
</para>
|
||||
<example>
|
||||
<title>get_template_vars (Template-Variablen extrahieren)</title>
|
||||
<programlisting>
|
||||
// Template-Variable 'foo' extrahieren
|
||||
$foo = $smarty->get_template_vars('foo');
|
||||
|
||||
// alle zugewiesenen Template-Variablen extrahieren
|
||||
$tpl_vars = $smarty->get_template_vars();
|
||||
// alle zugewiesenen Template-Variablen extrahieren
|
||||
$tpl_vars = $smarty->get_template_vars();
|
||||
|
||||
// Anschauen
|
||||
print_r($tpl_vars);</programlisting>
|
||||
|
||||
// Anschauen
|
||||
var_dump($tpl_vars);</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="api.is.cached">
|
||||
@@ -1000,13 +959,24 @@
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_block</function></funcdef>
|
||||
<paramdef>string <parameter>name</parameter></paramdef>
|
||||
<paramdef>string <parameter>impl</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>impl</parameter></paramdef>
|
||||
<paramdef>bool <parameter>cacheable</parameter></paramdef>
|
||||
<paramdef>array or null <parameter>cache_attrs</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um Block-Funktion-Plugins dynamisch zu registrieren.
|
||||
Übergeben Sie dazu den Namen der Block-Funktion und den Namen der
|
||||
PHP-Funktion, die die entsprechende Funktionalität bereitstellt.
|
||||
PHP-Callback-Funktion, die die entsprechende Funktionalität bereitstellt.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>impl</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
<para>
|
||||
<parameter>$cacheable</parameter> und <parameter>$cache_attrs</parameter> können in den meisten Fällen weggelassen werden. Konsultieren Sie <link linkend="caching.cacheable">Die Ausgabe von cachebaren Plugins Kontrollieren</link> für weitere Informationen.
|
||||
</para>
|
||||
<example>
|
||||
<title>register_block (Block-Funktion registrieren)</title>
|
||||
@@ -1014,12 +984,12 @@
|
||||
/* PHP */
|
||||
$smarty->register_block("translate", "do_translation");
|
||||
|
||||
function do_translation ($params, $content, &$smarty) {
|
||||
if ($content) {
|
||||
function do_translation ($params, $content, &$smarty, &$repeat) {
|
||||
if (isset($content)) {
|
||||
$lang = $params['lang'];
|
||||
|
||||
// übersetze den Inhalt von '$content'
|
||||
echo $translation;
|
||||
return $translation;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1035,7 +1005,8 @@
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_compiler_function</function></funcdef>
|
||||
<paramdef>string <parameter>name</parameter></paramdef>
|
||||
<paramdef>string <parameter>impl</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>impl</parameter></paramdef>
|
||||
<paramdef>bool <parameter>cacheable</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
@@ -1043,6 +1014,15 @@
|
||||
registrieren. Übergeben Sie dazu den Namen der Compiler-Funktion und den Namen der
|
||||
PHP-Funktion, die die entsprechende Funktionalität bereitstellt.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>impl</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
<para>
|
||||
<parameter>$cacheable</parameter> und <parameter>$cache_attrs</parameter> können in den meisten Fällen weggelassen werden. Konsultieren Sie <link linkend="caching.cacheable">Die Ausgabe von cachebaren Plugins Kontrollieren</link> für weitere Informationen.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="api.register.function">
|
||||
<title>register_function (Funktion registrieren)</title>
|
||||
@@ -1050,14 +1030,24 @@
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_function</function></funcdef>
|
||||
<paramdef>string <parameter>name</parameter></paramdef>
|
||||
<paramdef>string <parameter>impl</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>impl</parameter></paramdef>
|
||||
<paramdef>bool <parameter>cacheable</parameter></paramdef>
|
||||
<paramdef>array or null <parameter>cache_attrs</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um Template-Funktion-Plugins dynamisch zu
|
||||
registrieren. Übergeben Sie dazu den Namen der Template-Funktion
|
||||
und den Namen der PHP-Funktion, die die entsprechende Funktionalität bereitstellt.
|
||||
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>impl</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
<para>
|
||||
<parameter>$cacheable</parameter> und <parameter>$cache_attrs</parameter> können in den meisten Fällen weggelassen werden. Konsultieren Sie <link linkend="caching.cacheable">Die Ausgabe von cachebaren Plugins Kontrollieren</link> für weitere Informationen.
|
||||
</para>
|
||||
<example>
|
||||
<title>register_function (Funktion registrieren)</title>
|
||||
@@ -1068,7 +1058,7 @@
|
||||
extract($params);
|
||||
if(empty($format))
|
||||
$format="%b %e, %Y";
|
||||
echo strftime($format,time());
|
||||
return strftime($format,time());
|
||||
}
|
||||
|
||||
// Von nun an können Sie {date_now} verwenden, um das aktuelle Datum auszugeben.
|
||||
@@ -1081,7 +1071,7 @@
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_modifier</function></funcdef>
|
||||
<paramdef>string <parameter>name</parameter></paramdef>
|
||||
<paramdef>string <parameter>impl</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>impl</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
@@ -1090,6 +1080,12 @@
|
||||
und den Namen der PHP-Funktion, die die entsprechende Funktionalität
|
||||
bereitstellt.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>impl</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
<example>
|
||||
<title>register_modifier (Modifikator-Plugin registrieren)</title>
|
||||
<programlisting>
|
||||
@@ -1103,27 +1099,50 @@
|
||||
// um "\"-Zeichen (Backslash) aus Zeichenketten zu entfernen. ('\\' wird zu '\',...)</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="api.register.object">
|
||||
<title>register_object</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_object</function></funcdef>
|
||||
<paramdef>string <parameter>object_name</parameter></paramdef>
|
||||
<paramdef>object <parameter>$object</parameter></paramdef>
|
||||
<paramdef>array <parameter>allowed methods/properties</parameter></paramdef>
|
||||
<paramdef>boolean <parameter>format</parameter></paramdef>
|
||||
<paramdef>array <parameter>block methods</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet um ein Objekt zu registrieren. Konsultieren Sie den Abschnitt <link linkend="advanced.features.objects">Objekte</link>
|
||||
für weitere Informationen und Beispiele.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="api.register.outputfilter">
|
||||
<title>register_outputfilter (Ausgabefilter registrieren)</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_outputfilter</function></funcdef>
|
||||
<paramdef>string <parameter>function_name</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>function</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um Ausgabefilter dynamisch zu registrieren.
|
||||
Ausgabefilter verändern die Ausgabe,
|
||||
bevor sie angezeigt wird. Konsultieren Sie dazu den
|
||||
Abschnitt <link linkend="advanced.features.outputfilters">template output filters</link>
|
||||
</para>
|
||||
<para>
|
||||
Verwenden Sie diese Funktion um dynamisch Ausgabefilter zu registrieren, welche
|
||||
die Template Ausgabe verarbeiten bevor sie angezeigt wird. Konsultieren Sie
|
||||
den Abschnitt über <link linkend="advanced.features.outputfilters">Ausgabefilter</link>
|
||||
für mehr Informationen.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>function</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="api.register.postfilter">
|
||||
<title>register_postfilter ('post'-Filter registrieren)</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_postfilter</function></funcdef>
|
||||
<paramdef>string <parameter>function_name</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>function</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
@@ -1131,20 +1150,31 @@
|
||||
auf das kompilierte Template angewendet. Konsultieren Sie dazu den
|
||||
Abschnitt <link linkend="advanced.features.postfilters">template postfilters</link>.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>function</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="api.register.prefilter">
|
||||
<title>register_prefilter ('pre'-Filter registrieren)</title>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>void <function>register_prefilter</function></funcdef>
|
||||
<paramdef>string <parameter>function_name</parameter></paramdef>
|
||||
<paramdef>mixed <parameter>function</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
<para>
|
||||
Wird verwendet, um 'pre'-Filter dynamisch zu registrieren. 'pre'-Filter werden
|
||||
vor der Kompilierung auf das Template angewendet. Konsultieren Sie dazu den
|
||||
Abschnitt <link linkend="advanced.features.prefilters">template prefilters</link>.
|
||||
|
||||
Abschnitt <link linkend="advanced.features.prefilters">'pre'-Filter</link>.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>function</parameter> kann als (a) einen Funktionnamen oder (b) einem Array der Form <literal>array(&$object, $method)</literal>,
|
||||
wobei <literal>&$object</literal> eine Referenz zu einem Objekt und <literal>$method</literal> der Name der Methode die aufgerufen werden soll ist,
|
||||
oder als Array der Form <literal>array(&$class, $method)</literal>, wobei <literal>$class</literal> der Name der Klasse und <literal>$method</literal>
|
||||
der Name der Methode ist die aufgerufen werden soll, übergeben werden.
|
||||
</para>
|
||||
</sect1>
|
||||
<sect1 id="api.register.resource">
|
||||
@@ -1163,6 +1193,18 @@
|
||||
Konsultieren Sie den Abschnitt <link linkend="template.resources">template resources</link>
|
||||
für weitere Informationen zum Thema.
|
||||
</para>
|
||||
<note>
|
||||
<title>Technische Bemerkung</title>
|
||||
<para>
|
||||
Ein Ressourcename muss mindestens 2 Zeichen lang sein. Namen mit einem (1) Zeichen
|
||||
werden ignoriert und als Teil des Pfades verwenden, wie in $smarty->display('c:/path/to/index.tpl');.
|
||||
</para>
|
||||
</note>
|
||||
<para>
|
||||
Der Parameter <parameter>resource_funcs</parameter> muss aus 4 oder 5 Elementen bestehen. Wenn 4 Elemente übergeben werden,
|
||||
werden diese als Ersatz Callback-Funktionen fü "source", "timestamp", "secure" und "trusted" verwendet. Mit 5 Elementen
|
||||
muss der erste Parameter eine Referenz auf das Objekt oder die Klasse sein, welche die benötigten Methoden bereitstellt.
|
||||
</para>
|
||||
<example>
|
||||
<title>register_resource (Ressource registrieren)</title>
|
||||
<programlisting>
|
||||
@@ -1397,7 +1439,7 @@
|
||||
$smarty->caching = 2; // Lebensdauer ist pro Cache
|
||||
|
||||
|
||||
// Standardwert für '$cache_lifetime' auf 15 Minuten setzen
|
||||
// Standardwert für '$cache_lifetime' auf 5 Minuten setzen
|
||||
$smarty->cache_lifetime = 300;
|
||||
$smarty->display('index.tpl');
|
||||
|
||||
@@ -1622,9 +1664,170 @@
|
||||
</para>
|
||||
</note>
|
||||
</sect1>
|
||||
<sect1 id="caching.cacheable">
|
||||
<title>Die Ausgabe von cachebaren Plugins Kontrollieren</title>
|
||||
<para>
|
||||
Seit Smarty-2.6.0 kann bei der Registrierung angegeben werden ob ein Plugin
|
||||
cached werden soll. Der dritte Parameter für register_block, register_compiler_function
|
||||
und register_function heisst <parameter>$cacheable</parameter>, der Standardwert ist TRUE, was in Smarty vor
|
||||
Version 2.6.0 üblich war.
|
||||
</para>
|
||||
<para>
|
||||
Wenn ein Plugin mit $cacheable=false registriert wird, wird er bei jedem Besuch der Seite aufgerufen, selbst wenn die Site aus dem Cache stammt. Die Pluginfunktion verhält sich ein wenig wie <link linkend="plugins.inserts">insert</link>.
|
||||
</para>
|
||||
<para>
|
||||
Im Gegensatz zu <link linkend="language.function.insert">{insert}</link> werden die Attribute standartmässig nicht gecached. Sie können das caching jedoch mit dem vierten Parameter <parameter>$cache_attrs</parameter> kontrollieren. <parameter>$cache_attrs</parameter> ist ein Array aller Attributnamen die gecached wertden sollen.
|
||||
</para>
|
||||
<example>
|
||||
<title>Preventing a plugin's output from being cached</title>
|
||||
<programlisting>
|
||||
index.php:
|
||||
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
$smarty->caching = true;
|
||||
|
||||
function remaining_seconds($params, &$smarty) {
|
||||
$remain = $params['endtime'] - time();
|
||||
if ($remain >=0)
|
||||
return $remain . " second(s)";
|
||||
else
|
||||
return "done";
|
||||
}
|
||||
|
||||
$smarty->register_function('remaining', 'remaining_seconds', false, array('endtime'));
|
||||
|
||||
if (!$smarty->is_cached('index.tpl')) {
|
||||
// objekt $obj aus datenbank dem template zuweisen
|
||||
$smarty->assign_by_ref('obj', $obj);
|
||||
}
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
|
||||
|
||||
index.tpl:
|
||||
|
||||
Time Remaining: {remain endtime=$obj->endtime}</programlisting>
|
||||
<para>
|
||||
Der Wert von $obj->endtime ändert bei jeder Anzeige der Seite, selbst wenn die Seite gecached wurde. Das Objekt $obj wird nur geladen wenn die Seite nicht gecached wurde.
|
||||
</para>
|
||||
</example>
|
||||
<example>
|
||||
<title>Verhindern dass Template Blöcke gecached werden</title>
|
||||
<programlisting>
|
||||
index.php:
|
||||
|
||||
require('Smarty.class.php');
|
||||
$smarty = new Smarty;
|
||||
$smarty->caching = true;
|
||||
|
||||
function smarty_block_dynamic($param, $content, &$smarty) {
|
||||
return $content;
|
||||
}
|
||||
$smarty->register_block('dynamic', 'smarty_block_dynamic', false);
|
||||
|
||||
$smarty->display('index.tpl');
|
||||
|
||||
|
||||
index.tpl:
|
||||
|
||||
Page created: {"0"|date_format:"%D %H:%M:%S"}
|
||||
|
||||
{dynamic}
|
||||
|
||||
Now is: {"0"|date_format:"%D %H:%M:%S"}
|
||||
|
||||
... do other stuff ...
|
||||
|
||||
{/dynamic}</programlisting>
|
||||
</example>
|
||||
<para>
|
||||
Um sicherzustellen dass ein Teil eines Templates nicht gecached werden soll, kann dieser Abschnitt in einen {dynamic}...{/dynamic} Block verpackt werden.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
<chapter id="advanced.features">
|
||||
<title>Advanced Features</title>
|
||||
<sect1 id="advanced.features.objects">
|
||||
<title>Objekte</title>
|
||||
<para>
|
||||
Smarty erlaubt es, auf PHP Objekt durch das Template zuzugreiffen. Dafür gitbt es
|
||||
zwei Wege. Der erste ist, Objekte zu registrieren und wie auf eigene Funktionen zuzugreiffen.
|
||||
Der andere Weg ist, das Objekt dem Template zuzuweisen und darauf wie auf andere Variablen
|
||||
zuzugreiffen. Die erste Methode hat eine nettere Template Syntax und ist sicherer da der Zugriff
|
||||
auf ein registriertes Objekt mit Sicherheitseinstellungen kontrolliert werden kann. Der Nachteil
|
||||
ist, dass registrierte Objekte nicht in Loops verwendet werden k<>nnen. Welchen Weg Sie einschlagen
|
||||
wird von Ihren Bedürfnissen definiert, die erste Methode ist jedoch zu bevorzugen.
|
||||
</para>
|
||||
<para>
|
||||
Wenn Sicherheit eingeschaltet ist, können keine private Methoden (solche die einen '_'-Prefix tragen)
|
||||
aufgerufen werden. Wenn eine Methode und eine Eigeschaft mit dem gleichen Namen existieren wird die Methode
|
||||
verwendet.
|
||||
</para>
|
||||
<para>
|
||||
Sie können den Zugriff auf Methoden und Eigenschaften einschränken
|
||||
indem Sie sie als Array als dritten Registrationsparameter übergeben.
|
||||
</para>
|
||||
<para>
|
||||
Normalerweise werden Parameter welche einem Objekt via Template übergeben
|
||||
werden genau so übergeben wie dies bei normalen eigenen Funktionen der Fall ist.
|
||||
Das erste Objekt ist ein assoziatives Array und das zweite das Smarty Objekt selbst.
|
||||
Wenn Sie die Parameter einzeln erhalten möchten können Sie den vierten
|
||||
Parameter auf FALSE setzen.
|
||||
</para>
|
||||
<para>
|
||||
Der optional fünfte Parameter hat nur einen Effekt wenn
|
||||
<parameter>format</parameter> <literal>true</literal> ist und eine Liste von
|
||||
Methoden enthält die als Block verarbeitet werden sollen.
|
||||
Das bedeutet dass solche Methoden ein schliessendes Tag im Template
|
||||
enthalten müssen (<literal>{foobar->meth2}...{/foobar->meth2}</literal>)
|
||||
und die Parameter zu den Funktionen die selbe Syntax haben wie block-function-plugins:
|
||||
sie erhalten 4 Parameter
|
||||
<parameter>$params</parameter>,
|
||||
<parameter>$content</parameter>,
|
||||
<parameter>&$smarty</parameter> und
|
||||
<parameter>&$repeat</parameter>
|
||||
und sich auch wie block-function-plugins verhalten.
|
||||
</para>
|
||||
<example>
|
||||
<title>ein registiertes oder zugewiesenes Objekt verwenden</title>
|
||||
<programlisting>
|
||||
<?php
|
||||
// das objekt
|
||||
|
||||
class My_Object {
|
||||
function meth1($params, &$smarty_obj) {
|
||||
return "meine meth1";
|
||||
}
|
||||
}
|
||||
|
||||
$myobj = new My_Object;
|
||||
// objekt registrieren (referenz)
|
||||
$smarty->register_object("foobar",$myobj);
|
||||
// zugriff auf methoden und eigeschaften einschränken
|
||||
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
|
||||
// wenn wir das traditionelle parameter format verwenden wollen, übergeben wir false für den parameter format
|
||||
$smarty->register_object("foobar",$myobj,null,false);
|
||||
|
||||
// objekte zuweisen (auch via referenz möglich)
|
||||
$smarty->assign_by_ref("myobj", $myobj);
|
||||
|
||||
$smarty->display("index.tpl");
|
||||
?>
|
||||
|
||||
TEMPLATE:
|
||||
|
||||
{* zugriff auf ein registriertes objekt *}
|
||||
{foobar->meth1 p1="foo" p2=$bar}
|
||||
|
||||
{* ausgabe zuweisen *}
|
||||
{foobar->meth1 p1="foo" p2=$bar assign="output"}
|
||||
ausgabe war: {$output}
|
||||
|
||||
{* auf unser zugewiesenes objekt zugreiffen *}
|
||||
{$myobj->meth1("foo",$bar)}</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
<sect1 id="advanced.features.prefilters">
|
||||
<title>'pre'-Filter</title>
|
||||
<para>
|
||||
@@ -1878,7 +2081,9 @@
|
||||
ein Template mit 'display()' ausgeben, die Ausgabe mit 'fetch()'
|
||||
in einer Variablen speichern oder innnerhalb eines Template ein
|
||||
weiteres Template einbinden, müssen Sie den Ressourcen-Typ,
|
||||
gefolgt von Pfad und Template-Namen angeben.
|
||||
gefolgt von Pfad und Template-Namen angeben. Wenn kein Resourcetyp angegeben
|
||||
wird, wird <link linkend="variable.default.resource.type">$default_resource_type</link>
|
||||
verwendet.
|
||||
</para>
|
||||
<sect2 id="templates.from.template.dir">
|
||||
<title>Templates aus dem '$template_dir'</title>
|
||||
@@ -2116,9 +2321,9 @@
|
||||
entspricht der Reihenfolge in der sie geladen/registriert wurden.
|
||||
</para>
|
||||
<para>
|
||||
Aus Performancegründen existiert nur ein Plugin-Verzeichnis. Um ein Plugin
|
||||
zu installieren, speichern Sie es einfach in diesem Verzeichnis. Smarty wird
|
||||
es danach automatisch erkennen.
|
||||
Die <link linkend="variable.plugins.dir">plugins directory</link> Variable kann eine Zeichenkette,
|
||||
oder ein Array mit Verzeichnisnamen sein. Um einen Plugin zu installieren können Sie ihn einfach
|
||||
in einem der Verzeichnisse ablegen.
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
@@ -2198,10 +2403,11 @@
|
||||
folgender Weg gewählt werden, um das benötigte Plugin zu laden:
|
||||
</para>
|
||||
<programlisting>
|
||||
require_once SMARTY_DIR . 'plugins/function.html_options.php';</programlisting>
|
||||
require_once $smarty->_get_plugin_filepath('function', 'html_options');</programlisting>
|
||||
<para>
|
||||
Das Smarty Objekt wird jedem Plugin immer als letzter Parameter
|
||||
übergeben (ausser bei Variablen-Modifikatoren).
|
||||
übergeben (ausser bei Variablen-Modifikatoren und bei Blücken wird
|
||||
<parameter>&$repeat</parameter> nach dem Smarty Objekt übergeben um Rückwärtskompatibel zu bleiben).
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
@@ -2413,7 +2619,8 @@
|
||||
<para>
|
||||
Ihre Funktions-Implementation wird von Smarty zweimal
|
||||
aufgerufen: einmal für das öffnende und einmal
|
||||
für das schliessende Tag.
|
||||
für das schliessende Tag. (konsultieren Sie den Abschnitt zu <literal>&$repeat</literal>
|
||||
um zu erfahren wie Sie dies ändern können.)
|
||||
</para>
|
||||
<para>
|
||||
Nur das Öffnungs-Tag kann Attribute enthalten. Alle so übergebenen Attribute
|
||||
@@ -2431,6 +2638,15 @@
|
||||
Achtung: Der Template-Abschnitt den Sie erhalten, wurde bereits von
|
||||
Smarty bearbeitet. Sie erhalten also die Template-Ausgabe, nicht den Template-Quelltext.
|
||||
</para>
|
||||
<para>
|
||||
Der Parameter <parameter>&$repeat</parameter> wird als Referenz übergeben und
|
||||
kontrolliert wie oft ein Block dargestellt werden soll. Standardwert von <parameter>$repeat</parameter>
|
||||
ist beim ersten Aufruf (für das öffnende Tag) <literal>true</literal>, danach immer
|
||||
<literal>false</literal>.
|
||||
Jedes Mal wenn eine Funktion für <parameter>&$repeat</parameter> TRUE zur&uum;ck gibt,
|
||||
wird der Inhalt zwischen {func} .. {/func} erneut mit dem veränderten
|
||||
Inhalt als <parameter>$content</parameter> Parameter aufgerufen.
|
||||
</para>
|
||||
<para>
|
||||
Wenn Sie verschachtelte Block-Funktionen haben, können Sie
|
||||
die Eltern-Block-Funktion mit der <varname>$smarty->_tag_stack</varname> Variable
|
||||
@@ -2458,11 +2674,11 @@
|
||||
*/
|
||||
function smarty_block_translate($params, $content, &$smarty)
|
||||
{
|
||||
if ($content) {
|
||||
if (isset($content)) {
|
||||
$lang = $params['lang'];
|
||||
|
||||
// den $content irgendwie intelligent übersetzuen
|
||||
echo $translation;
|
||||
return $translation;
|
||||
}
|
||||
}</programlisting>
|
||||
</example>
|
||||
|
Reference in New Issue
Block a user