NAVIGATION
This is an old revision of the document!
Bedingung: $phpwcms['allow_ext_render'] = 1; → /config/phpwcms/conf.inc.php
Beschreibung:
Im /frontend_render/ -Ordner können php Skripte abgelegt werden, die während des Parsens (vereinfacht: Interne Verarbeitung) der Seite abgearbeitet werden, bevor die Seite an den Browser ausgeliefert wird.
Alle Dateien mit der Endung *.php werden vom System geladen und ausgeführt. Die Dateinamen sind frei wählbar (empfohlenes Muster: rt_mein_dateiname.php).
Die Reihenfolge ist nicht bestimmbar.
Das Kernstück ist in der Regel die Variable $content[“all”], in der der Inhalt des Contents der Seite liegt (zwischen <body> und </body>).
Es können natürlich auch andere systemfremde Funktionen ausgeführt werden.
Hier der Dateinhalt eines sehr einfachen Ersetzers:
<?php // ---------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ---------------------------------------------------------------- $content["all"] = str_replace('{My_TicTac}', 'My clock ist working very well.', $content["all"]); ?>
Der Tag hierzu hieße {My_TicTac}.
Eingesetzt in einen CP würde
{My_TicTac} {DATE_LONG}
im Frontend
My clock ist working very well. Freitag, 23. Januar 2009
ergeben.
Daher, die Stelle an der der Tag steht wird durch das Ergebnis aus der Datei im /frontend_render/ ersetzt. (Hier wurde noch der System-Tag {DATE_LONG} hinzugenommen).
<?php /* ================================================================ dd.mm.yyyy Short descrition Autor: My Name TAG: {My_Tag} Filename: my_tag_replacer.php Folder: /template/inc_script/frontend_render/ Switch: $phpwcms['allow_ext_render'] = 1; (/config/phpwcms/conf.inc.php) Forum: http://forum.phpwcms.org/viewtopic.php?p=xxxxx ================================================================ */ // ---------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ---------------------------------------------------------------- if( ! (strpos($content["all"],'{My_Tag:')===false)) { function func_my_specials ($spec1,$spec2) { $my_spec_result = ' ['. $spec2 . ' + '. $spec1 . ']'; return $my_spec_result; } function func_my_tag_replacer ($var1, $var2, $var3 = "no parameter catched") { // My_php_code/source; // e.g. $my_result = ' var1= '. $var1 . func_my_specials ($var3,$var2) . '<br /> var2= '. $var2 . '<br /> var3= '. $var3 . '<br />'. LF; return $my_result; } // {My_Tag:,,} or {My_Tag:} // ----------------------------------------------------- $content["all"] = str_replace('{My_Tag:}', func_my_tag_replacer("Werner","Ulla"), $content["all"]); $content["all"] = preg_replace('/{My_Tag:(.*?),(.*?),(.*?)}/e', 'func_my_tag_replacer("$1","$2","$3")', $content["all"]); // ----------------------------------------------------- } $content["all"] = str_replace('{My_TicTac}', 'My clock ist working very well.', $content["all"]); // -----------[ CLOSE ]---------------- ?>
Aufruf in einem CP:
{My_Tag:} {My_Tag: erster toller Text, zweiter toller text, dritter toller Text}
Ausgabe im Frontend:
var1= Werner [Ulla + no parameter catched] var2= Ulla var3= no parameter catched var1= erster toller Text [ zweiter toller text + dritter toller Text] var2= zweiter toller text var3= dritter toller Text
So ist es möglich sehr viel spezielle Fälle entsprechend zu behandeln.
— Knut Heermann (flip-flop) 2009/01/23 15:19