This is an old revision of the document!


/frontend_render/

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.

Einfaches Beispiel:

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).

Beispiel 2:

rt_my_tag.php

<?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


Kleine Linkübersicht

deutsch/ersetzer_rts/frontend_render.1242431197.txt.gz · Last modified: 2018/06/03 18:07 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0