Entwicklung/Codedoku: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
→Templates: ergänzungen
(→Templates: ergänzungen) |
|||
Zeile 270: | Zeile 270: | ||
== Templates == | == Templates == | ||
[[wikipedia:Template (Programmierung)|Templates]] dienen in Webanwendungen dazu, die Generierung von aus- und einzugebenden Daten von deren HTML-Darstellung zu trennen. HTML- und JavaScript-Code wird komplett in den | [[wikipedia:Template (Programmierung)|Templates]] dienen in Webanwendungen dazu, die Generierung von aus- und einzugebenden Daten von deren HTML-Darstellung zu trennen. HTML- und JavaScript-Code wird komplett in den Template-Dateien untergebracht, PHP-Code soweit wie irgend möglich in PHP-Scripten. | ||
Die Einbindung der Templates in den PHP-Programmablauf geschieht wie folgt: | |||
# Festlegung, welche Templatedatei verwendet wird | |||
# Zuweisung von variablen Inhalten an das Template | |||
# Darstellung des Templates | |||
Für alle drei Punkte gibt es entsprechende Bibliotheksfunktionen. | |||
=== lib1-Templates === | === lib1-Templates === | ||
Die alte Library enthält ein | Die alte Library enthält ein selbstgemachtes, simples Templatesystem. Die Templatedateien befinden sich in {{Codepath|htdocs/lang/de/ocstyle}} und enthalten den auszugebenden HTML- und JavaScript-Code. Der Name der Template-Datei wird im PHP-Code über die globale Variable <code>$tplname</code> festgelegt, z.B. | ||
:<code>$tplname = 'newcache';</code> | |||
Für alle variablen Inhalte werden im Template Platzhalter wie z.B. <code>{cachename}</code> verwendet; die PHP-Variable wird dann übergeben mit | |||
:<code>tpl_set_var('cachename', $cachename);</code> | |||
Sofern der variable Teil auch HTML-Code oder etwas zu Übersetzendes enthält, wird dies in speziellen Include-Dateien abgelegt, z.B. | Sofern der variable Teil auch HTML-Code oder etwas zu Übersetzendes enthält, wird dies in speziellen Include-Dateien abgelegt, z.B. | ||
Zeile 284: | Zeile 293: | ||
Die Include-Datei wird im PHP-Hauptmodul eingebunden und die Variablen per <code>mb_ereg_replace</code> ersetzt, bevor das Ganze per <code>tpl_set_var()</code> ans Template übergeben wird. | Die Include-Datei wird im PHP-Hauptmodul eingebunden und die Variablen per <code>mb_ereg_replace</code> ersetzt, bevor das Ganze per <code>tpl_set_var()</code> ans Template übergeben wird. | ||
:<code>tpl_BuildTemplate();</code> | |||
stellt schließlich das Template dar und beendet das PHP-Script. | |||
Alle [[Opencaching]]-Seiten außer OC.de und OC.se/no verwenden noch das lib1-Templatesystem. | Alle [[Opencaching]]-Seiten außer OC.de und OC.se/no verwenden noch das lib1-Templatesystem. | ||
Zeile 311: | Zeile 323: | ||
Die zwischengespeicherten Templates werden in <code>htdocs/cache2/smarty</code> abgelegt. | Die zwischengespeicherten Templates werden in <code>htdocs/cache2/smarty</code> abgelegt. | ||
Auf die Initialisierung des Templates folgen Variablen-Zuweisungen (s.u.) und schließlich die Darstellung mit | |||
:<code>$tpl->display();</code> | |||
die das PHP-Script beendet. | |||
Zeile 391: | Zeile 408: | ||
Auch der Inhalt (''body'') von Emails wird über Templates erzeugt. | Auch der Inhalt (''body'') von Emails wird über Templates erzeugt. | ||
lib1-Email-Templates befinden sich in {{Codepath|htdocs/util/notification}} und {{Codepath|htdocs/util/watchlist}} und werden von den entsprechenden PHP-Modulen direkt per <code>mb_ereg_replace()</code> aufgelöst. | lib1-Email-Templates befinden sich in {{Codepath|htdocs/lang/de/ocstyle/email}}, {{Codepath|htdocs/util/notification}} und {{Codepath|htdocs/util/watchlist}} und werden von den entsprechenden PHP-Modulen direkt per <code>mb_ereg_replace()</code> aufgelöst. | ||
lib2-Email-Templates liegen in {{Codepath|htdocs/templates2/mail}} und werden von <code>mail.class.php</code> per Smarty verarbeitet. | lib2-Email-Templates liegen in {{Codepath|htdocs/templates2/mail}} und werden von <code>mail.class.php</code> per Smarty verarbeitet. | ||
Zeile 397: | Zeile 414: | ||
=== OKAPI === | === OKAPI === | ||
Die OKAPI hat ein eigenes Templatesystem; mehr dazu im Abschnitt [[#OKAPI|OKAPI]]. | Die OKAPI hat ein eigenes Templatesystem; mehr dazu im Abschnitt [[#OKAPI|OKAPI]]. | ||
== CSS Style Sheets == | == CSS Style Sheets == | ||
Die Style Sheets befinden sich in | Die Style Sheets befinden sich in |