Wenn ich den Quelltext richtig kapiert habe, dann dürfte ich über den TPL_CONTENT_DISPLAY-Event nur ausschließlich Zugriff auf den ("inneren") Content-Bereich bekommen. (Ich möchte aber in den Body-Tag). Geprüft habe ich das aber nicht. Die Beschreibung des Events macht da ja ziemlich andere Angaben.
andi wrote
Es wäre aber vermutlich möglich in einem sehr frühen Event (DOKUWIKI_STARTED) per
ob_start das output buffering einzuschalten und mit einem callback dann die Ausgabe zu manipulieren (ungetestet).
Das scheint der richtige Weg für mich zu sein. Ich habe das mal in einem Labormuster getestet:
Das folgende Script...
<?php
function aepfelzubirnen($buffer)
{ return (str_replace("Äpfel", "Birnen", $buffer)); }
function styling($buffer)
{ return (str_replace("<body>", "<body style=\"color:red\" >", $buffer)); }
ob_start(); // OB_START() kann beliebig oft aufgerufen werden und
ob_start("aepfelzubirnen"); // wird dabei ineinander verschachtelt.
ob_start();
ob_start("styling");
ob_start();
?>
<!DOCTYPE html>
<html>
<body>
<p>Das ist wie Äpfel mit Birnen zu vergleichen.</p>
</body>
</html>
<? // Am Ende des Scripts bzw. wenn der Puffer zum Browser gesendet werden
// soll, werden alle Verschachtelungen automatisch aufgelöst und alle
// Call-Back-Funktionen ausgeführt.
...führt zu dieser HTML-Ausgabe:
<!DOCTYPE html>
<html>
<body style="color:red" >
<p>Das ist wie Birnen mit Birnen zu vergleichen.</p>
</body>
</html>
(In Ahnlehnung an ein Beispiel auf:
http://php.net/manual/de/function.ob-start.php)
Der Wild-Life-Test in DokuWiki steht noch aus, aber ich bin guter Dinge.
Vielen Dank für alle Hilfe!
- Michael Sy.