diff --git a/docs/de/designers.sgml b/docs/de/designers.sgml index 6f0624a5..099f8752 100644 --- a/docs/de/designers.sgml +++ b/docs/de/designers.sgml @@ -1,7 +1,7 @@ - - - + + + Smarty für Template Designer @@ -61,10 +61,10 @@ {include file="header.tpl"} -{if $name eq "Fred"} - Du bist Fred und darfst das hier sehen! +{if $highlight_name} + Welcome, <font color="{#fontColor#}">{$name}!</font> {else} - Willkommen, <font color="{#fontColor#}">{$name}!</font> + Welcome, {$name}! {/if} {include file="footer.tpl"} @@ -111,36 +111,52 @@ - - Variablen in doppelten Anführungszeichen - - Smarty will recognize assigned variables embedded in double quotes so long - as the variables contain only numbers, letters, underscores and brackets - []. With any other characters (period, object reference, etc.) the variable - must be surrounded by backticks. - Smarty erkennt zugewisene Variablen in doppelten Anführungszeichen solange - der Variablenname nur Zahlen, Buchstaben, Unterstriche oder Klammern [] enthaelt. - Wenn andere Zeichen (punkte, objekt referenzen, etc) verwendet werden, so muss - die Variable mit Backticks versehen werden. - - - Anführungszeichen Syntax - - Syntax Beispiele: - {func var="test $foo test"} <-- sieht $foo - {func var="test $foo_bar test"} <-- sieht $foo_bar - {func var="test $foo[0] test"} <-- sieht $foo[0] - {func var="test $foo[bar] test"} <-- sieht $foo[bar] - {func var="test $foo.bar test"} <-- sieht $foo (not $foo.bar) - {func var="test `$foo.bar` test"} <-- sieht $foo.bar + + Variablen mit Doppelten Anführungszeichen + + Smarty erkennt zugewiesene Variablen mit doppelten Anführungszeichen solange + die Variablen nur Zahlen, Buchstaben, Understriche oder Klammern [] enthalten. Mit allen + anderen Zeichen wie Punkt, Objekt Referenzen, etc muss die Vairable mit Backticks umschlossen sein. + + + Syntax von eingebetteten Anfürungszeichen + +SYNTAX BEISPIELE: +{func var="test $foo test"} <-- sieht $foo +{func var="test $foo_bar test"} <-- sieht $foo_bar +{func var="test $foo[0] test"} <-- sieht $foo[0] +{func var="test $foo[bar] test"} <-- sieht $foo[bar] +{func var="test $foo.bar test"} <-- sieht $foo (nicht $foo.bar) +{func var="test `$foo.bar` test"} <-- sieht $foo.bar - Anwendungsbeispiele: - {include file="subdir/$tpl_name.tpl"} <-- $tpl_name wird durch den Wert ersetzt - {cycle values="one,two,`$smarty.config.myval`"} <-- muss Backticks enthalten - - +PRAKTISCHE BEISPIELE: +{include file="subdir/$tpl_name.tpl"} <-- ersetzt $tpl_name durch wert +{cycle values="one,two,`$smarty.config.myval`"} <-- muss Backticks enthalten + + + + Math + + Mathematische Operationen können direkt auf Variablen verwendet werden. + + + Mathematik Beispiele + +{$foo+1} +{$foo*$bar} +{* kompliziertere Beispiele *} + +{$foo->bar-$bar[1]*$baz->foo->bar()-3*7} + +{if ($foo+$bar.test%$baz*134232+10+$b+10)} + +{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"} + +{assign var="foo" value="`$foo+$bar`"} + + @@ -245,26 +261,13 @@ email: zaphod@slartibartfast.com<br> Verwendung von Variablen aus Konfigurationsdateien - Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit - umschliessenden '#'-Zeichen (Raute), oder der Smarty Variable $smarty.config. - Die zweite Syntax ist sinnvoll, wenn Werte in Variablen mit Anführungszeichen geladen werden sollen. - + Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit + umschliessenden '#'-Zeichen (Raute). Konfigurationsvariablen -foo.conf: - -seitenTitel = "This is mine" -bodyHintergrundFarbe = "#eeeeee" -tabelleRahmenBreite = "3" -tabelleHintergrundFarbe = "#bbbbbb" -reiheHintergrundFarbe = "#cccccc" - -index.tpl: - -{config_load file="foo.conf"} <html> <title>{#seitenTitel#}</title> <body bgcolor="{#bodyHintergrundFarbe#}"> @@ -276,42 +279,7 @@ index.tpl: </tr> </table> </body> -</html> - -AUSGABE: - -<html> -<title>This is mine</title> -<body bgcolor="#eeeeee"> -<table border="3" bgcolor="#bbbbbb"> -<tr bgcolor="#cccccc"> - <td>Vornamen</td> - <td>Nachnamen</td> - <td>Adresse</td> -</tr> -</table> -</body> -</html> - -index.tpl: (alternate syntax) - -{config_load file="foo.conf"} -<html> -<title>{$smarty.config.seitenTitel}</title> -<body bgcolor="{$smarty.config.bodyHintergrundFarbe}"> -<table border="{$smarty.config.tabelleRahmenBreite}" bgcolor="{$smarty.config.tabelleHintergrundFarbe}"> -<tr bgcolor="{$smarty.config.reiheHintergrundFarbe}"> - <td>Vornamen</td> - <td>Nachnamen</td> - <td>Adresse</td> -</tr> -</table> -</body> -</html> - -AUSGABE: (gleich, für beide Beispiele) - - +</html> Variablen aus Konfigurationsdateien können erst verwendet werden, @@ -387,16 +355,6 @@ AUSGABE: (gleich, für beide Beispiele) - - {$smarty.config} - - {$smarty} kann verwendet werden um auf geladenen Konfigurationsdateien zu referenzieren. - {$smarty.config.foo} ist ein Synonym für {#foo#}. Konsultieren Sie den Abschnitt - config_load für ein Beispiel. - - - - {$smarty.section}, {$smarty.foreach} @@ -441,7 +399,18 @@ Thema: {$thema|truncate:40:"..."} Modifikator ein @ Zeichen vorangestellt werden. Beispiel: {$artikelTitel|@count} (gibt die Anzahl Elemente des Arrays $artikelTitel aus.) - + + Modifikatoren können aus Ihrem $plugins_dir + automatisch geladen (sehen Sie dazu auch Naming Conventions) + oder explizit registriert werden (register_modifier). + Zudem können alle PHP-Funktionen implizit als Modifikatoren verwendet werden. (Das Beispiel mit dem + @count Modifier verwendet die Funktion 'count' von PHP und keinen Smarty Modifikator) + PHP Funktionen zu verwenden eröffnet zwei Probleme: erstens: manchmal ist die Parameter Reiehnfolge nicht + erwünscht. ({"%2.f"|sprintf:$float} funktioniert zwar, sieht aber als {$float|string_format:"%2.f"} + das durch Smarty geliefert wird, besser aus. Zweitens: wenn $security auf TRUE gesetzt ist, + müssen alle verwendeten PHP Funktionen im $security_settings['MODIFIER_FUNCS']-Array + enthalten sein. + capitalize (in Grossbuchstaben schreiben) @@ -461,6 +430,33 @@ Diebe Haben In Norwegen 20 Tonnen Streusalz Entwendet. count_characters (Buchstaben zählen) + + + + + + + + + + Parameter Position + Typ + Benötigt + Standard + Beschreibung + + + + + 1 + boolean + Nein + false + Definiert ob Leerzeichen mitgezählt werden sollen. + + + + Wird verwendet um die Anzahl Buchstaben in einer Variable auszugeben. @@ -470,64 +466,15 @@ Diebe Haben In Norwegen 20 Tonnen Streusalz Entwendet. {$artikelTitel} {$artikelTitel|count_characters} +{$artikelTitel|count_characters:true} AUSGABE: 20% der US-Amerikaner finden ihr Land (die USA) nicht auf der Landkarte. -72 +72 +61 - - cat - - - - - - - - - - Parameter Position - Typ - Erforderlich - cat - Beschreibung - - - - - 1 - string - Nein - empty - Hängt den übergebenen Wert der Variable an. - - - - - - Dieser Wert wird der Variable angehängt. - - - cat - - index.php: - - $smarty = new Smarty; - $smarty->assign('articleTitle', 'Psychics predict world didn't end'); - $smarty->display('index.tpl'); - - index.tpl: - - {$articleTitle|cat:" yesterday."} - - AUSGABE: - - Psychics predict world didn't end yesterday. - - - count_paragraphs (Absätze zählen) @@ -929,30 +876,6 @@ In Kalifornien wurde ein Hund in das Wählerverzeichnis eingetragen. in kalifornien wurde ein hund in das wählerverzeichnis eingetragen. - - nl2br - - Konvertiert alle Zeilenschaltungen in der Variable in <br /> Tags. - Verhält sich gleich wie die PHP Funktion 'nl2br()'. - - - nl2br - - index.php: - - $smarty = new Smarty; - $smarty->assign('articleTitle', "Sun or rain expected\ntoday, dark tonight"); - $smarty->display('index.tpl'); - - index.tpl: - - {$articleTitle|nl2br} - - AUSGABE: - - Sun or rain expected<br />today, dark tonight - - regex_replace (Ersetzen mit regulären Ausdrücken) @@ -1423,6 +1346,40 @@ e i n e m s t a d t r. . . capture (Ausgabe abfangen) + + + + + + + + + + Attribut Name + Typ + Benötigt + Standardwert + Beschreibung + + + + + name + string + no + default + Der Name des abgefangenen Blocks + + + assign + string + No + n/a + Der Name der Variable welcher der Wert zugewiesen werden soll. + + + + 'capture' wird verwendet, um die Template-Ausgabe abzufangen und in einer Variable zu speichern. Der Inhalt zwischen {capture name="foo"} und {/capture} @@ -1690,6 +1647,51 @@ phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234<br> + + + Foreach-Loops haben auch eigene Variablen welche die Foreach Eigenschaften enthalten. + Diese werden wie folgt ausgewiesen: {$smarty.foreach.foreachname.varname}. foreachname + ist der Name der als name Attribut von Foreach übergeben wurden. + + + iteration + + gibt die aktuelle iteration aus + + + iteration beginnt immer mit 1 und wird danach bei jedem durchgang um 1 inkrementiert. + + + + + first + + first ist TRUE wenn die aktuelle Iteration die erste ist + + + + + last + + last ist TRUE wenn die aktuelle Iteration die letzte ist + + + + + show + + show wird als Parameter von foreach verwedet und ist ein boolscher Wert, TRUE oder FALSE. Auf FALSE wird + nichts ausgegeben und wenn foreachelse gefunden wird, dieser angezeigt. + + + + + total + + total gibt die Anzahl Iterationen des Foreach Loops aus und kann in- oder nach- Foreach Blöcken verwendet werden. + + + include (einbinden) @@ -3014,23 +3016,16 @@ AUSGABE: {* initialisieren *} -{section name=rows loop=$data} -<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> - <td>{$data[rows]}</td> -</tr> -{/section} +{cycle values="#eeeeee,#d0d0d0"} +{cycle} +{cycle} + AUSGABE: -<tr bgcolor="#eeeeee"> - <td>1</td> -</tr> -<tr bgcolor="#d0d0d0"> - <td>2</td> -</tr> -<tr bgcolor="#eeeeee"> - <td>3</td> -</tr> - + +#eeeeee +#d0d0d0 +#eeeeee @@ -3249,231 +3244,246 @@ Bitte geben Sie einen <b>Provinznamen</b> ein. {/if} - - html_checkboxes - - - - - - - - - - Attribut Name - Typ - Erforderlich - Standardwert - Beschreibung - - - - - name - string - Nein - checkbox - Name der checkbox-Liste - - - werte - array - Ja, ausser wenn das option-Attribut verwendet wird - n/a - Ein Array mit Werten für die checkbox-Liste - - - ausgabe - array - Ja, ausser wenn das option-Attribut verwendet wird - n/a - Ein Array mit Ausgaben/Namen für die checkbox-Liste - - - checked - string - Nein - empty - Das ausgewählte option-Element - - - options - associative array - Ja, ausser wert/ausgabe wird verwendet - n/a - Assoziatives Array mit Wert/Ausgabe Paaren - - - separator - string - Nein - empty - Zeichenkette die zwischen den checkboxes ausgegeben werden soll - - - - - - html_checkboxes generiert HTML-Checkboxes mit den Übergebenen Werten. - Kümmert sich auch darum welches option-Element ausgewählt sein soll. - Erforderliche Attribute sind Werte/Ausgabe ausser wenn options verwendet wird. - Die Ausgabe ist XHTML kompatibel. - - - Alle weiteren Parameter, die in der obigen Liste nicht erwähnt werden, - werden als <input>-Tags ausgegeben. - + + html_checkboxes + + + + + + + + + + Attribut Name + Typ + Erforderlich + Standardwert + Beschreibung + + + + + name + string + Nein + checkbox + Name der checkbox Liste + + + values + array + ja, ausser wenn das option Attribut verwendet wird + n/a + ein Array mit Werten für die checkboxes + + + output + array + ja, ausser wenn das option Attribut verwendet wird + n/a + ein Array mit Werten für checkbox Knöpfe + + + selected + string/array + No + empty + das/die ausgewählten checkbox Elemente + + + options + assoziatives array + Ja, ausser Werte/Ausgabe wird verwendet + n/a + ein assoziatives Array mit Werten und Ausgaben + + + separator + string + No + empty + Zeichenkette die zwischen den checkbox Elementen eingefügt werden soll + + + labels + boolean + No + true + fügt der Ausgabe <label>-Tags hinzu + + + + + + html_checkboxes ist eine Funktion die aus den übergebenen Daten html checkbox + Elemente erstellt und kümmert sich darum welche Elemente ausgewählt sind. + Erforderliche Attribute sind Wert/Ausgabe oder Options. Die Ausgabe ist XHTML kompatibel + + + Alle Parameter die nicht in der Liste erwähnt werden, werden ausgegeben. + html_checkboxes index.php: - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_ids', array(1000,1001,1002,1003)); - $smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane - Johnson','CHarlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->assign('cust_ids', array(1000,1001,1002,1003)); +$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Charlie Brown')); +$smarty->assign('customer_id', 1001); +$smarty->display('index.tpl'); - index.tpl: +index.tpl: - {html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} +{html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} - index.php: +index.php: - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_checkboxes', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson','Carlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->assign('cust_checkboxes', array( + 1000 => 'Joe Schmoe', + 1001 => 'Jack Smith', + 1002 => 'Jane Johnson', + 1003 => 'Charlie Brown')); +$smarty->assign('customer_id', 1001); +$smarty->display('index.tpl'); - index.tpl: +index.tpl: - {html_checkboxes name="id" options=$cust_checkboxes checked=$customer_id separator="<br />"} +{html_checkboxes name="id" options=$cust_checkboxes checked=$customer_id separator="<br />"} - AUSGABE: (Beide Beispiele) +AUSGABE: (beider Beispiele) - <input type="checkbox" name="id[]" value="1000">Joe Schmoe<br /> - <input type="checkbox" name="id[]" value="1001" checked="checked"><br /> - <input type="checkbox" name="id[]" value="1002">Jane Johnson<br /> - <input type="checkbox" name="id[]" value="1003">Charlie Brown<br /> - - - - html_image - - - - - - - - - - Attribut Name - Typ - Erforderlich - Standardwert - Beschreibung - - - - - file - string - Ja - n/a - Name/Pfad zum Bild - - - border - string - Nein - 0 - Grösse des Rahmens - - - height - string - Nein - Bildhöhe - Darstellungshöhe - - - width - string - Nein - Bildbreite - Darstellungsbreite - - - basedir - string - Nein - DocumentRoot des Webservers - Verzeichnis auf das relative Pfade aufgebaut werden sollen - - - link - string - Nein - n/a - href-Ziel auf das das Bild verweisen soll - - - - - - 'html_image' generiert ein HTML-Tag f¨r ein Bild. Höhe und Breite - werden berechnet falls sie nicht ¨bergeben werden. - - - 'basedir' definiert das Verzeichnis auf welchen relative Pfade aufgebaut - werden sollen. Falls nicht ¨bergeben, wird die Umgebungsvariable - DOCUMENT_ROOT verwendet. Wenn Sicherheit eingeschaltet ist, muss der - Pfad in einem sicheren Verzeichnis sein. - - - Wenn 'link' übergeben wird, wird um das Bild ein <a href="LINKVALUE"><a> - Tag eingefühgt. - - - Technische Bemerkung - - 'html_image' verursacht Festplattenzugriffe um die Breite/Höhe des Bildes - zu berechnen. Falls Sie kein 'caching' einsetzen, ist es zu empfehlen, 'html_image' - nicht zu verwenden, und stattdessen statische image Tags zu verwenden. - - - - html_image - - index.php: - - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->display('index.tpl'); - - index.tpl: - - {image file="pumpkin.jpg"} - {image file="/pfad/aus/docroot/pumpkin.jpg"} - {image file="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg"} - - AUSGABE: (möglich) - - <img src="pumpkin.jpg" border="0" width="44" height="68"> - <img src="/pfad/aus/docroot/pumpkin.jpg" border="0" width="44" height="68"> - <img src="../pfad/relativ/zu/aktuellem/verzeichnis/pumpkin.jpg" border="0" width="44" height="68"> +<label><input type="checkbox" name="checkbox[]" value="1000" />Joe Schmoe</label><br /> +<label><input type="checkbox" name="checkbox[]" value="1001" checked="checked" />Jack Smith</label><br /> +<label><input type="checkbox" name="checkbox[]" value="1002" />Jane Johnson</label><br /> +<label><input type="checkbox" name="checkbox[]" value="1003" />Charlie Brown</label><br /> - + + + html_image + + + + + + + + + + Attribut Name + Typ + Erforderlich + Standardwert + Beschreibung + + + + + file + string + Ja + n/a + Name/Pfad zum Bild + + + border + string + Nein + 0 + Stärke des Rahmens + + + height + string + No + Normale Höhe des Bildes + Höhe des Bildes + + + width + string + No + Normale Breite des Bildes + Breite des Bildes + + + basedir + string + no + web server doc root + directory to base relative paths from + + + alt + string + no + "" + Alternative Beschreibung des Bildes + + + href + string + no + n/a + href Wert des Tags + + + + + + html_image ist eine eigene Funktion die ein HTML Tag für ein Bild erzeugt. + Die Höhe und Breite der Ausgabe wird automatisch aus der Bilddatei berechnet + wenn die Werte nicht übergeben werden. + + + basedir ist der Basispfad der für die Verlinkung verwendet werden soll. Wenn kein + Wert übergeben wird, wird die Umgebungsvariable DOCUMENT_ROOT verwendet. Wenn Sicherheit + eingeschaltet ist, muss das Bild in einem sicheren Verzeichnis liegen. + + + href ist das href Attribut für das Image-Tag. Wenn dieser Wert übergeben wird, + wird um das Bild ein <a href="LINKVALUE"><a> Tag erzeugt. + + + Technische Bemerkung + + html_image greift auf das Dateisystem zu um Höhe und Breite zu errechnen. Wenn Sie + caching nicht verwenden sollten Sie normalerweise auf diese Funktion aus performance Gründen verzichten. + + + +html_image + +index.php: + +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->display('index.tpl'); + +index.tpl: + +{html_image file="pumpkin.jpg"} +{html_image file="/path/from/docroot/pumpkin.jpg"} +{html_image file="../path/relative/to/currdir/pumpkin.jpg"} + +AUSGABE: (möglich) + +<img src="pumpkin.jpg" alt="" border="0" width="44" height="68" /> +<img src="/path/from/docroot/pumpkin.jpg" alt="" border="0" width="44" height="68" /> +<img src="../path/relative/to/currdir/pumpkin.jpg" alt="" border="0" width="44" height="68" /> + + + + + + html_options (Ausgabe von HTML-Options) @@ -3512,7 +3522,7 @@ index.php: string Nein empty - Das ausgewählte Option Element. + Das ausgewählte Array Element. options @@ -3521,13 +3531,6 @@ index.php: n/a Assoziatives Array mit Werten die ausgegeben werden sollen. - - name - string - Nein - empty - Name der select-Gruppe - @@ -3535,191 +3538,153 @@ index.php: 'html_options' wird verwendet um HTML-Options Listen mit den übergebenen Daten zu erzeugen. Die Funktion kümmert sich ebenfalls um das setzen des ausgewählten Standardwertes. Die Attribute 'values' und 'output' sind erforderlich, - ausser man verwendet das Attribut 'options'. - - - Wenn ein Wert als Array erkannt wird, + ausser man verwendet das Attribut 'options'. Wenn ein Wert als Array erkannt wird, wird er als HTML-OPTGROUP ausgegeben und die Werte werden in Gruppen dargestellt. Rekursion wird unterstützt. Die Ausgabe ist XHTML kompatibel. - - Wenn das optionale name Attribut übergeben wird, - umschliesst ein <select name="groupname"></select> Tag die 'options'-Liste. - Sonst wird nur die 'options'-Liste generiert. - - - All parameters that are not in the list above are printed as - name/value-pairs inside the <select>-tag. They are ignored if - the optional name is not given. - Alle weiteren Parameter werden innerhalb des <select>-Tags - als wert/ausgabe-Paare übergeben. Falls name - nicht übergeben wird, werden die Werte ignoriert. - html_options - index.php: - - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_ids', array(1000,1001,1002,1003)); - $smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane - Johnson','Carlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); - - index.tpl: +{* nehmen Sie an, dass $cust_ids und $cust_names Arrays mit Werten sind, + während $customer_id auch leer sein kann *} <select name=customer_id> {html_options values=$cust_ids selected=$customer_id output=$cust_names} </select> - index.php: - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_options', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson', - 1004 => 'Charlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); - - index.tpl: +{* alternativ können die Werte aus 'values' und 'output' als assoziative Arrays + an 'options' übergeben werden. $customer_options ist in diesem Beispiel ein assoziatives Array *} <select name=customer_id> - {html_options options=$cust_options selected=$customer_id} + {html_options options=$customer_options selected=$customer_id} </select> -AUSGABE (beide Beispiele): +AUSGABE: <select name=customer_id> - <option value="1000">Joe Schmoe</option> - <option value="1001" selected="selected">Jack Smith</option> - <option value="1002">Jane Johnson</option> - <option value="1003">Charlie Brown</option> + <option value="1000">Joe Schmoe</option> + <option value="1001" selected="selected">Jack Smith</option> + <option value="1002">Jane Johnson</option> + <option value="1003">Charlie Brown</option> </select> - - html_radios - - - - - - - - - - Attribut Name - Typ - Erforderlich - Standardwert - Beschreibung - - - - - name - string - Nein - radio - name der radio-Liste - - - values - array - Ja, ausser wenn das 'options'-Attribut verwendet wird - n/a - Ein Array mit Werten für die radio-Liste - - - output - array - Ja, ausser wenn das 'options'-Attribut verwendet wird - n/a - Ein Array mit Namen für die radio-Liste - - - checked - string - Nein - empty - Das ausgewählte checkbox-Element - - - options - associative array - Ja, ausser wenn die Attribute 'values' und 'output' verwendet werden - n/a - Ein assoziatves Array mit wert/ausgabe Paaren - - - separator - string - Nein - empty - Zeichenkette die zwischen den radio-Elementen eingefügt werden soll. - - - - - - 'html_radios' generiert eine Liste mit radio-Elementen aus den übergebenen Daten. - Es kümmert sich ebenfalls darum, welches Element ausgewählt sein soll. Erforderliche - Attribute sind 'values'/'output', ausser wenn 'options' verwendet wird. Die Ausgabe ist XHTML kompatibel. - - - Alle weiteren Parameter werden als <input>-Tags ausgegeben. - - - html_radios - - index.php: + + html_radios (Ausgabe von HTML-Radio Tags) + + + + + + + + + + Attribut Name + Typ + Erforderlich + Standardwert + Beschreibung + + + + + name + string + Nein + radio + Name der Radio Liste + + + values + array + Ja, ausser 'options'-Attribut wird verwendet. + n/a + Array mit Werten für die dropdown-Liste. + + + output + array + Ja, ausser 'options'-Attribut wird verwendet. + n/a + Arrays mit Namen für die dropdown-Liste. + + + selected + string + Nein + empty + Das ausgewählte Array Element. + + + options + associative array + Ja, ausser wenn das 'values'- und das 'output'-Attribut verwendet werden. + n/a + Assoziatives Array mit Werten die ausgegeben werden sollen. + + + separator + string + No + empty + Die Zeichenkette die zwischen 2 Radioelemente eingefügt werden soll. + + + + + + html_radio ist eine Funktion die aus den übergebenen Daten html radio + Elemente erstellt und kümmert sich darum welche Elemente ausgewählt sind. + Erforderliche Attribute sind Wert/Ausgabe oder Options. Die Ausgabe ist XHTML kompatibel + + +html_radios + +index.php: - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_ids', array(1000,1001,1002,1003)); - $smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane Johnson','Carlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->assign('cust_ids', array(1000,1001,1002,1003)); +$smarty->assign('cust_names', array('Joe Schmoe','Jack Smith','Jane +Johnson','Carlie Brown')); +$smarty->assign('customer_id', 1001); +$smarty->display('index.tpl'); - index.tpl: +index.tpl: - {html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} +{html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} - index.php: +index.php: - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('cust_radios', array( - 1001 => 'Joe Schmoe', - 1002 => 'Jack Smith', - 1003 => 'Jane Johnson', - 1004 => 'Charlie Brown')); - $smarty->assign('customer_id', 1001); - $smarty->display('index.tpl'); +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->assign('cust_radios', array( + 1001 => 'Joe Schmoe', + 1002 => 'Jack Smith', + 1003 => 'Jane Johnson', + 1004 => 'Charlie Brown')); +$smarty->assign('customer_id', 1001); +$smarty->display('index.tpl'); - index.tpl: +index.tpl: - {html_radios name="id" options=$cust_radios checked=$customer_id separator="<br />"} +{html_radios name="id" options=$cust_radios checked=$customer_id separator="<br />"} - AUSGABE: (beide Beispiele) - - <input type="radio" name="id[]" value="1000">Joe Schmoe<br /> - <input type="radio" name="id[]" value="1001" checked="checked"><br /> - <input type="radio" name="id[]" value="1002">Jane Johnson<br /> - <input type="radio" name="id[]" value="1003">Charlie Brown<br /> - - +AUSGABE: (beider Beispiele) +<input type="radio" name="id[]" value="1000">Joe Schmoe<br /> +<input type="radio" name="id[]" value="1001" checked="checked"><br /> +<input type="radio" name="id[]" value="1002">Jane Johnson<br /> +<input type="radio" name="id[]" value="1003">Charlie Brown<br /> + + html_select_date (Ausgabe von Daten als HTML-'options') @@ -4292,117 +4257,131 @@ AUSGABE: <option value="am" selected>AM</option> <option value="pm">PM</option> </select> - - - - html_table - - - - - - - - - - Attribut Name - Typ - Erforderlich - Standardwert - Beschreibung - - - - - loop - array - Ja - n/a - Array mit den Daten durch die gelooped werden soll. - - - cols - integer - Nein - 3 - Anzahl Spalten in der Tabelle - - - table_attr - string - Nein - border="1" - Attribute für table-Tag - - - tr_attr - string - Nein - empty - Attribute für tr-Tags (Arrays werden durchlaufen) - - - td_attr - string - Nein - empty - Attribute für td-Tags (Arrays werden durchlaufen) - - - trailpad - string - Nein - &nbsp; - Werte um leere Zellen auszufüllen - - - - - - html_table generiert eine Tabelle aus dem - übergebenen Array. Das cols Attribut - definiert die Anzahl Spalten die generiert werden sollen. table_attr, tr_attr - und td_attr definiert die Werte die den entsprechenden HTML-Tags als Attribute angehängt werden. - Wenn tr_attr oder td_attr Arrays sind, werden diese durchlaufen. - trailpad definiert den Wert der in leere Zellen eingefügt werden soll. - - - html_table - - index.php: - - require('Smarty.php.class'); - $smarty = new Smarty; - $smarty->assign('data',array(1,2,3,4,5,6,7,8,9)); - $smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"')); - $smarty->display('index.tpl'); - - index.tpl: - - {html_table loop=$data} - {html_table loop=$data cols=4 table_attrs='border="0"'} - {html_table loop=$data cols=4 tr_attrs=$tr} - - AUSGABE: - - <table border="1"> - <tr><td>1</td><td>2</td><td>3</td></tr> - <tr><td>4</td><td>5</td><td>6</td></tr> - <tr><td>7</td><td>8</td><td>9</td></tr> - </table> - <table border="0"> - <tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> - <tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> - <tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> - </table> - <table border="1"> - <tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr> - <tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr> - <tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> - </table> - + + html_table + + + + + + + + + + Attribut Name + Typ + Erforderlich + Standartwert + Beschreibung + + + + + loop + array + Ja + n/a + Array mit den Daten für den Loop + + + cols + integer + Nein + 3 + Anzahl Reihen in einer Tabelle + + + table_attr + string + No + border="1" + Attribute für das Table-Tag + + + tr_attr + string + No + empty + Attribute für das tr-Tag (Arrays werden durchlaufen) + + + td_attr + string + No + empty + Attribute für das tr-Tag (Arrays werden durchlaufen) + + + trailpad + string + No + &nbsp; + Wert für leere Zellen + + + + hdir + string + No + right + Richtung in der die Zeilen gerendered werden. Mögliche Werte: left/right + + + vdir + string + No + down + Richtung in der die Reihen gerendered werden. Mögliche Werte: up/down + + + + + + html_table ist eine eigene Funktion die einen Array als + Tabelle ausgibt. Das cols Attribut definiert die Menge + von Reihen die ausgegeben werden sollen. table_attr, tr_attr + und td_attr definieren die Attribute für die HTML Tags. Wenn tr_attr + oder td_attr Arrays sind, werden diese durchlaufen. trailpad + wird in leere Zellen eingefügt. + + +html_table + +index.php: + +require('Smarty.php.class'); +$smarty = new Smarty; +$smarty->assign('data',array(1,2,3,4,5,6,7,8,9)); +$smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#dddddd"')); +$smarty->display('index.tpl'); + +index.tpl: + +{html_table loop=$data} +{html_table loop=$data cols=4 table_attr='border="0"'} +{html_table loop=$data cols=4 tr_attr=$tr} + +AUSGABE: + +<table border="1"> +<tr><td>1</td><td>2</td><td>3</td></tr> +<tr><td>4</td><td>5</td><td>6</td></tr> +<tr><td>7</td><td>8</td><td>9</td></tr> +</table> +<table border="0"> +<tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> +<tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> +<tr><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> +</table> +<table border="1"> +<tr bgcolor="#eeeeee"><td>1</td><td>2</td><td>3</td><td>4</td></tr> +<tr bgcolor="#dddddd"><td>5</td><td>6</td><td>7</td><td>8</td></tr> +<tr bgcolor="#eeeeee"><td>9</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr> +</table> + + math (Mathematik) diff --git a/docs/de/getting-started.sgml b/docs/de/getting-started.sgml index bdc5d872..7de686e4 100644 --- a/docs/de/getting-started.sgml +++ b/docs/de/getting-started.sgml @@ -72,11 +72,36 @@ Basis Installation + + Technische Bemerkung - 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. + + + 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. + + + + 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. + + + Technische Bemerkung + + 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. + + + + + Folgende Library Dateien werden mit Smarty geliefert und werden benötigt: Smarty-Library Dateiliste @@ -85,93 +110,106 @@ Smarty.class.php Smarty_Compiler.class.php Config_File.class.php debug.tpl -/plugins/*.php (alle Dateien!) +/core/*.php (alle) +/plugins/*.php (alle) + - Smarty verwendet eine PHP Konstante namens SMARTY_DIR - 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 Smarty.class.php - nicht in Ihrem 'include_path' ist und Sie nicht den absoluten Pfad angeben, müssen Sie - SMARTY_DIR manuell zuweisen. SMARTY_DIR must 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 + SMARTY_DIR auf den korrekten + Pfad zeigt. Im Folgenden werden Beispiele für beide Fälle aufgezeigt. So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript: - Smarty Instanz aus 'include_path' erstellen: + Smarty Instanz erstellen: require('Smarty.class.php'); $smarty = new Smarty; - - Versuchen Sie das oben gezeigte Script auszuführen. Wenn Sie einen Fehler erhalten ('Smarty.class.php file could not be found'), - müssen Sie wie folgt vorgehen: - + + Versuchen Sie das Skript auszuführen. Wenn Sie eine Fehlermeldung erhalten dass + Smarty.class.php nicht gefunden werden konnte, versuchen Sie folgendes: + - - Übergeben Sie den vollen Pfad - - require('/usr/local/lib/php/Smarty/Smarty.class.php'); - $smarty = new Smarty; - + + Absoluter Pfad übergeben + +require('/usr/local/lib/php/Smarty/Smarty.class.php'); +$smarty = new Smarty; + - - Fügen Sie den Library Pfad Ihrem PHP-'include_path' hinzu - - // 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; - + + Library Verzeichnis dem Include-Pfad hinzufügen + +// 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; + - - Setzen Sie SMARTY_DIR manuell - + + SMARTY_DIR manuell setzen + define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty; - + + Jetzt, wo die Library Dateien an ihrem Platz sind, wird es - Zeit, die Smarty Verzeichnisse zu erstellen. Smarty benötigt 4 Verzeichnisse - welche (normerweise) templates, templates_c, configs - und cache heissen. Jedes kann jedoch über die - Smarty Attribute $template_dir, $compile_dir, $config_dir, - und $cache_dir definiert werden. Es wird empfohlen für jede Applikation die Smarty verwenden - soll eigene Verzeichnisse einzurichten. + Zeit, die Smarty Verzeichnisse zu erstellen. - 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 ausserhalb - 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. - - 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/'. + + 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. + + + + Technische Bemerkung + + Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen, + um mögliche Direktzugriffe zu verhindern. + + + 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. + + + + Technische Bemerkung + 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). - + + Die Dateistruktur bis jetzt: @@ -185,6 +223,7 @@ $smarty = new Smarty; /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; /web/www.mydomain.com/docs/guestbook/index.php + + Technische Bemerkung + + 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. + + + 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ö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öhnlich in '/usr/local/apache/conf/') nachsehen, unter welchem Benutzer Ihr Server läuft. @@ -206,11 +255,11 @@ $smarty = new Smarty; Dateirechte einrichten -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/ +chown nobody:nobody /web/www.mydomain.com/smarty/guestbook/cache/ +chmod 770 /web/www.mydomain.com/smarty/guestbook/cache/ @@ -229,7 +278,7 @@ chmod 770 /web/www.mydomain.com/smarty/cache/ - Editieren von /web/www.mydomain.com/smarty/templates/index.tpl + Editieren von /web/www.mydomain.com/smarty/guestbook/templates/index.tpl {* Smarty *} @@ -252,17 +301,14 @@ Hallo, {$name}! 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. Editieren von /web/www.mydomain.com/docs/guestbook/index.php -// 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'); 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. @@ -315,9 +360,10 @@ $smarty->display('index.tpl'); // 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 { } + + Technische Bemerkung + + 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. + + + Nun passen wir 'index.php' an, um 'setup.php' zu verwenden: diff --git a/docs/de/manual.sgml b/docs/de/manual.sgml index f8e2f9da..62ffc54d 100644 --- a/docs/de/manual.sgml +++ b/docs/de/manual.sgml @@ -30,7 +30,7 @@ - Version 2.5 + Version 2.0 2001 2002 diff --git a/docs/de/programmers.sgml b/docs/de/programmers.sgml index 2b73cf60..a5e47710 100644 --- a/docs/de/programmers.sgml +++ b/docs/de/programmers.sgml @@ -390,6 +390,20 @@ Normalerweise '}'. + + $show_info_header + + Gibt am Anfang der HTML-Seite die Smarty Version und das Kompilier-Datum des Templates + als Kommentar aus. Normalerweise 'false'. + + + + $show_info_include + + Gibt am Anfang und am Ende jedes eingebundenen Templates einen HTML-Kommentar aus. + Normalerweise 'false'. + + $compiler_class @@ -405,6 +419,16 @@ Verhält sich wie 'variables_order' in der php.ini. + + $request_use_auto_globals + + 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 variable.request.vars.order + keine Auswirkungen, da php's Konfigurationswert gpc_order verwendet wird. + + $compile_id @@ -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}. + + $default_resource_type + + 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 + Resource Kapitel für weitere Informationen. + + Methoden @@ -447,27 +481,12 @@ string varname mixed var - - void append - string varname - mixed var - boolean merge - 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. - - Technical Note - - 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 (anhängen) @@ -488,27 +507,20 @@ string varname mixed var - - void append_by_ref - string varname - mixed var - boolean merge - 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. Technische Bemerkung - 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. @@ -567,11 +579,11 @@ Technical Note - 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. @@ -853,80 +865,27 @@ echo $output; - - get_config_vars - - - array get_config_vars - string varname - - - - Gibt die definierte Variable aus einer Konfigurationsdatei zurück, - wenn kein Parameter übergeben wird, wird ein Array aller Variablen - zurückgegeben. - - - get_config_vars - - // 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); - - - - get_registered_object - - - array get_registered_object - string object_name - - - - 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. - - - get_registered_object - - 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 - } - } - - get_template_vars (Template-Variablen extrahieren) array get_template_vars - string varname + - 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. get_template_vars (Template-Variablen extrahieren) - // Template-Variable 'foo' extrahieren - $foo = $smarty->get_template_vars('foo'); - - // alle zugewiesenen Template-Variablen extrahieren - $tpl_vars = $smarty->get_template_vars(); - // Anschauen - print_r($tpl_vars); + // alle zugewiesenen Template-Variablen extrahieren + $tpl_vars = $smarty->get_template_vars(); + + + // Anschauen + var_dump($tpl_vars); @@ -1000,13 +959,24 @@ void register_block string name - string impl + mixed impl + bool cacheable + array or null cache_attrs 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. + + + Der Parameter impl kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + + + $cacheable und $cache_attrs können in den meisten Fällen weggelassen werden. Konsultieren Sie Die Ausgabe von cachebaren Plugins Kontrollieren für weitere Informationen. register_block (Block-Funktion registrieren) @@ -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 @@ void register_compiler_function string name - string impl + mixed impl + bool cacheable @@ -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. + + Der Parameter impl kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + + + $cacheable und $cache_attrs können in den meisten Fällen weggelassen werden. Konsultieren Sie Die Ausgabe von cachebaren Plugins Kontrollieren für weitere Informationen. + register_function (Funktion registrieren) @@ -1050,14 +1030,24 @@ void register_function string name - string impl + mixed impl + bool cacheable + array or null cache_attrs 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. - + + + Der Parameter impl kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + + + $cacheable und $cache_attrs können in den meisten Fällen weggelassen werden. Konsultieren Sie Die Ausgabe von cachebaren Plugins Kontrollieren für weitere Informationen. register_function (Funktion registrieren) @@ -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 @@ void register_modifier string name - string impl + mixed impl @@ -1090,6 +1080,12 @@ und den Namen der PHP-Funktion, die die entsprechende Funktionalität bereitstellt. + + Der Parameter impl kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + register_modifier (Modifikator-Plugin registrieren) @@ -1103,27 +1099,50 @@ // um "\"-Zeichen (Backslash) aus Zeichenketten zu entfernen. ('\\' wird zu '\',...) + + register_object + + + void register_object + string object_name + object $object + array allowed methods/properties + boolean format + array block methods + + + + Wird verwendet um ein Objekt zu registrieren. Konsultieren Sie den Abschnitt Objekte + für weitere Informationen und Beispiele. + + register_outputfilter (Ausgabefilter registrieren) void register_outputfilter - string function_name + mixed function - - Wird verwendet, um Ausgabefilter dynamisch zu registrieren. - Ausgabefilter verändern die Ausgabe, - bevor sie angezeigt wird. Konsultieren Sie dazu den - Abschnitt template output filters - + + Verwenden Sie diese Funktion um dynamisch Ausgabefilter zu registrieren, welche + die Template Ausgabe verarbeiten bevor sie angezeigt wird. Konsultieren Sie + den Abschnitt über Ausgabefilter + für mehr Informationen. + + + Der Parameter function kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + register_postfilter ('post'-Filter registrieren) void register_postfilter - string function_name + mixed function @@ -1131,20 +1150,31 @@ auf das kompilierte Template angewendet. Konsultieren Sie dazu den Abschnitt template postfilters. + + Der Parameter function kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. + register_prefilter ('pre'-Filter registrieren) void register_prefilter - string function_name + mixed function Wird verwendet, um 'pre'-Filter dynamisch zu registrieren. 'pre'-Filter werden vor der Kompilierung auf das Template angewendet. Konsultieren Sie dazu den - Abschnitt template prefilters. - + Abschnitt 'pre'-Filter. + + + Der Parameter function kann als (a) einen Funktionnamen oder (b) einem Array der Form array(&$object, $method), + wobei &$object eine Referenz zu einem Objekt und $method der Name der Methode die aufgerufen werden soll ist, + oder als Array der Form array(&$class, $method), wobei $class der Name der Klasse und $method + der Name der Methode ist die aufgerufen werden soll, übergeben werden. @@ -1163,6 +1193,18 @@ Konsultieren Sie den Abschnitt template resources für weitere Informationen zum Thema. + + Technische Bemerkung + + 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');. + + + + Der Parameter resource_funcs 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. + register_resource (Ressource registrieren) @@ -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 @@ + + Die Ausgabe von cachebaren Plugins Kontrollieren + + 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 $cacheable, der Standardwert ist TRUE, was in Smarty vor + Version 2.6.0 üblich war. + + + 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 insert. + + + Im Gegensatz zu {insert} werden die Attribute standartmässig nicht gecached. Sie können das caching jedoch mit dem vierten Parameter $cache_attrs kontrollieren. $cache_attrs ist ein Array aller Attributnamen die gecached wertden sollen. + + + Preventing a plugin's output from being cached + +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} + + 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. + + + + Verhindern dass Template Blöcke gecached werden + +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} + + +Um sicherzustellen dass ein Teil eines Templates nicht gecached werden soll, kann dieser Abschnitt in einen {dynamic}...{/dynamic} Block verpackt werden. + + Advanced Features + + Objekte + + 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. + + + 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. + + + Sie können den Zugriff auf Methoden und Eigenschaften einschränken + indem Sie sie als Array als dritten Registrationsparameter übergeben. + + + 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. + + + Der optional fünfte Parameter hat nur einen Effekt wenn + format true 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 ({foobar->meth2}...{/foobar->meth2}) + und die Parameter zu den Funktionen die selbe Syntax haben wie block-function-plugins: + sie erhalten 4 Parameter + $params, + $content, + &$smarty und + &$repeat + und sich auch wie block-function-plugins verhalten. + + + ein registiertes oder zugewiesenes Objekt verwenden + +<?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)} + + 'pre'-Filter @@ -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 $default_resource_type + verwendet. Templates aus dem '$template_dir' @@ -2116,9 +2321,9 @@ entspricht der Reihenfolge in der sie geladen/registriert wurden. - 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 plugins directory 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. @@ -2198,10 +2403,11 @@ folgender Weg gewählt werden, um das benötigte Plugin zu laden: - require_once SMARTY_DIR . 'plugins/function.html_options.php'; + require_once $smarty->_get_plugin_filepath('function', 'html_options'); 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 + &$repeat nach dem Smarty Objekt übergeben um Rückwärtskompatibel zu bleiben). @@ -2413,7 +2619,8 @@ 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 &$repeat + um zu erfahren wie Sie dies ändern können.) 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. + + Der Parameter &$repeat wird als Referenz übergeben und + kontrolliert wie oft ein Block dargestellt werden soll. Standardwert von $repeat + ist beim ersten Aufruf (für das öffnende Tag) true, danach immer + false. + Jedes Mal wenn eine Funktion für &$repeat TRUE zur&uum;ck gibt, + wird der Inhalt zwischen {func} .. {/func} erneut mit dem veränderten + Inhalt als $content Parameter aufgerufen. + Wenn Sie verschachtelte Block-Funktionen haben, können Sie die Eltern-Block-Funktion mit der $smarty->_tag_stack 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; } }