diff --git a/docs/de/designers.sgml b/docs/de/designers.sgml index fe062581..cf70b16e 100644 --- a/docs/de/designers.sgml +++ b/docs/de/designers.sgml @@ -1,7 +1,7 @@ - - - + + + Smarty für Template Designer @@ -111,6 +111,36 @@ + + 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 + + Anwendungsbeispiele: + {include file="subdir/$tpl_name.tpl"} <-- $tpl_name wird durch den Wert ersetzt + {cycle values="one,two,`$smarty.config.myval`"} <-- muss Backticks enthalten + + + + @@ -215,13 +245,26 @@ email: zaphod@slartibartfast.com<br> Verwendung von Variablen aus Konfigurationsdateien - Variablen, die aus einer Konfigurationsdatei geladen werden, referenziert man mit - umschliessenden '#'-Zeichen (Raute). + 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. + 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#}"> @@ -233,7 +276,42 @@ email: zaphod@slartibartfast.com<br> </tr> </table> </body> -</html> +</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) + + Variablen aus Konfigurationsdateien können erst verwendet werden, @@ -309,6 +387,16 @@ email: zaphod@slartibartfast.com<br> + + {$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} @@ -389,6 +477,57 @@ AUSGABE: 72 + + 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) @@ -790,6 +929,30 @@ 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) @@ -2851,16 +3014,23 @@ AUSGABE: {* initialisieren *} -{cycle values="#eeeeee,#d0d0d0"} -{cycle} -{cycle} - +{section name=rows loop=$data} +<tr bgcolor="{cycle values="#eeeeee,#d0d0d0"}"> + <td>{$data[rows]}</td> +</tr> +{/section} AUSGABE: - -#eeeeee -#d0d0d0 -#eeeeee +<tr bgcolor="#eeeeee"> + <td>1</td> +</tr> +<tr bgcolor="#d0d0d0"> + <td>2</td> +</tr> +<tr bgcolor="#eeeeee"> + <td>3</td> +</tr> + @@ -3079,6 +3249,231 @@ 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 + +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'); + + + index.tpl: + + {html_checkboxes values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} + + + 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'); + + index.tpl: + + {html_checkboxes name="id" checkboxes=$cust_checkboxes checked=$customer_id separator="<br />"} + + + AUSGABE: (Beide 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 '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"> + + html_options (Ausgabe von HTML-Options) @@ -3117,7 +3512,7 @@ Bitte geben Sie einen <b>Provinznamen</b> ein. string Nein empty - Das ausgewählte Array Element. + Das ausgewählte Option Element. options @@ -3126,6 +3521,13 @@ Bitte geben Sie einen <b>Provinznamen</b> ein. n/a Assoziatives Array mit Werten die ausgegeben werden sollen. + + name + string + Nein + empty + Name der select-Gruppe + @@ -3133,39 +3535,192 @@ Bitte geben Sie einen <b>Provinznamen</b> ein. '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 -{* nehmen Sie an, dass $cust_ids und $cust_names Arrays mit Werten sind, - während $customer_id auch leer sein kann *} + 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: <select name=customer_id> {html_options values=$cust_ids selected=$customer_id output=$cust_names} </select> + index.php: -{* 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 *} + 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: <select name=customer_id> - {html_options options=$customer_options selected=$customer_id} + {html_options options=$cust_options selected=$customer_id} </select> -AUSGABE: +AUSGABE (beide Beispiele): <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: + + 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: + + {html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"} + + + 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'); + + + index.tpl: + + {html_radios name="id" radios=$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 /> + + + + html_select_date (Ausgabe von Daten als HTML-'options') @@ -3737,6 +4292,115 @@ 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> + diff --git a/docs/de/getting-started.sgml b/docs/de/getting-started.sgml index 3bd9ed29..bdc5d872 100644 --- a/docs/de/getting-started.sgml +++ b/docs/de/getting-started.sgml @@ -72,36 +72,11 @@ Basis Installation - - Technische Bemerkung - 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: + 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. Smarty-Library Dateiliste @@ -114,10 +89,12 @@ debug.tpl - 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. + 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. So erzeugt man eine Instanz der Smarty-Klasse im PHP-Skript: @@ -131,15 +108,29 @@ $smarty = new Smarty; - Wenn sich die Dateien ausserhalb des PHP-'include_path' befinden, - muss die Konstante SMARTY_DIR - auf den absoluten Pfad zeigen und mit einem '/' enden. Nehmen wir an, - die Library-Dateien befinden sich in '/usr/local/lib/php/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: - Instanz von Smarty aus SMARTY_DIR erstellen: - + Übergeben Sie den vollen Pfad + + 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; + + + + Setzen Sie SMARTY_DIR manuell + define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); $smarty = new Smarty; @@ -147,51 +138,40 @@ $smarty = new Smarty; Jetzt, wo die Library Dateien an ihrem Platz sind, wird es - Zeit, die Smarty Verzeichnisse zu erstellen. + 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. - 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. - - - 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. + 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. - - Technische Bemerkung - Wir empfehlen, diese Verzeichnisse ausserhalb der DocumentRoot anzulegen, - um mögliche Direktzugriffe zu verhindern. - - + 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. + 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: @@ -214,16 +194,6 @@ $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') @@ -282,14 +252,17 @@ 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 -define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); -require(SMARTY_DIR.'Smarty.class.php'); +// Smarty laden +require('Smarty.class.php'); $smarty = new Smarty; @@ -333,7 +306,8 @@ $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. + 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. @@ -341,10 +315,9 @@ $smarty->display('index.tpl'); // Smarty Library Dateien laden -define('SMARTY_DIR','/usr/local/lib/php/Smarty/'); require(SMARTY_DIR.'Smarty.class.php'); -// ein guter Platz um Applikations spezifische Libraries zu laden +// steup.php ist auch ein guter Platz um Applikations spezifische Libraries zu laden // require('guestbook/guestbook.lib.php'); class Smarty_GuestBook extends Smarty { @@ -368,18 +341,6 @@ 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 62ffc54d..f8e2f9da 100644 --- a/docs/de/manual.sgml +++ b/docs/de/manual.sgml @@ -30,7 +30,7 @@ - Version 2.0 + Version 2.5 2001 2002 diff --git a/docs/de/programmers.sgml b/docs/de/programmers.sgml index 52428fe2..2b73cf60 100644 --- a/docs/de/programmers.sgml +++ b/docs/de/programmers.sgml @@ -390,20 +390,6 @@ 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 @@ -461,12 +447,27 @@ 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. + die mehrere Namen/Wert-Paare enthalten, übergeben. Wenn Sie als dritten Parameter + 'true' übergeben werden die beiden Arrays zusammengefügt. + + 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) @@ -487,20 +488,27 @@ 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. Konsultieren Sie das PHP-Manual zum Thema 'variable referencing' - für weitere Erklärungen. + 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. Technische Bemerkung - '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. + 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. @@ -559,11 +567,11 @@ Technical Note - '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. + 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. @@ -845,27 +853,80 @@ 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 ein Array der zugewiesenen Template-Variablen zurück. + Gibt den Wert der übergebenen Template-Variable zurück. Wenn kein Parameter + übergeben wird, besteht die Rückgabe aus einem Array aller zugewiesener Variablen. 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(); - // alle zugewiesenen Template-Variablen extrahieren - $tpl_vars = $smarty->get_template_vars(); - - - // Anschauen - var_dump($tpl_vars); + // Anschauen + print_r($tpl_vars); diff --git a/docs/designers.sgml b/docs/designers.sgml index 879de1d2..df1231f1 100644 --- a/docs/designers.sgml +++ b/docs/designers.sgml @@ -122,16 +122,16 @@ embedded quotes syntax SYNTAX EXAMPLES: -{func var="test $foo test"} <-- sees $foo -{func var="test $foo_bar test"} <-- sees $foo_bar -{func var="test $foo[0] test"} <-- sees $foo[0] -{func var="test $foo[bar] test"} <-- sees $foo[bar] -{func var="test $foo.bar test"} <-- sees $foo (not $foo.bar) -{func var="test `$foo.bar` test"} <-- sees $foo.bar +{func var="test $foo test"} <-- sees $foo +{func var="test $foo_bar test"} <-- sees $foo_bar +{func var="test $foo[0] test"} <-- sees $foo[0] +{func var="test $foo[bar] test"} <-- sees $foo[bar] +{func var="test $foo.bar test"} <-- sees $foo (not $foo.bar) +{func var="test `$foo.bar` test"} <-- sees $foo.bar PRACTICAL EXAMPLES: -{include file="subdir/$tpl_name.tpl"} <-- will replace $tpl_name with value -{cycle values="one,two,`$smarty.config.myval`"} <-- must have backticks +{include file="subdir/$tpl_name.tpl"} <-- will replace $tpl_name with value +{cycle values="one,two,`$smarty.config.myval`"} <-- must have backticks diff --git a/libs/Smarty_Compiler.class.php b/libs/Smarty_Compiler.class.php index bf0a690d..2f59106c 100644 --- a/libs/Smarty_Compiler.class.php +++ b/libs/Smarty_Compiler.class.php @@ -307,10 +307,19 @@ class Smarty_Compiler extends Smarty { $template_compiled .= $text_blocks[$i]; /* Reformat data between 'strip' and '/strip' tags, removing spaces, tabs and newlines. */ - if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled, $match)) { - $strip_tags = $match[0]; - $strip_tags_modified = preg_replace("!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", '', $strip_tags); - $strip_tags_modified = preg_replace('![\r\n]+!m', '', $strip_tags_modified); + if (preg_match_all("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $template_compiled, $_match)) { + $strip_tags = $_match[0]; + $_strip_search = array( + '%([^\\\\]\?>)\n%', // remove newlines after PHP close tags + "!{$ldq}/?strip{$rdq}|[\t ]+$|^[\t ]+!m", // remove leading/trailing space chars + '%[\r\n]+%m', // remove CRs and newlines + '%([^\\\\]\?>)%'); // replace newlines after PHP close tags + $_strip_replace = array( + '\\1', + '', + '', + '\\1' . "\n"); + $strip_tags_modified = preg_replace($_strip_search, $_strip_replace, $strip_tags); for ($i = 0, $for_max = count($strip_tags); $i < $for_max; $i++) $template_compiled = preg_replace("!{$ldq}strip{$rdq}.*?{$ldq}/strip{$rdq}!s", $this->quote_replace($strip_tags_modified[$i]),