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 Dateiinhalt einer sehr einfachen Prozedur, die einfach nur den Text “Das ist ein unsinniger Text” an das Seitenende jeder Seite schreibt:
<?php // ---------------------------------------------------------------- // obligate check for phpwcms constants if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); } // ---------------------------------------------------------------- $content["all"] .= '<p>Das ist ein unsinniger Text</p>'; ?>
Hier der Dateiinhalt 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