Stefans Wiki



DokuWiki - Weitere Wikiseiten im Template einbinden

Ziel

Zusätzlich zur aktuellen Wikiseite soll das DokuWiki noch weitere Wikiseiten anzeigen.

Lösung

Die Template-Datei main.php wird um eine entsprechende PHP-Routine erweitert die die angegebene zusätzliche Wikiseite lädt und ins Template einfügt.

Bestimmte Wikiseite einbinden

Will man nur eine vorher bestimmt Wikiseite - z.B. Wiki:Menuezeile - einbinden, so kann man das durch folgenden Code erreichen:

 1: <?php
 2: // Name der aktuellen Wikiseite
 3: global $ID;
 4:
 5: // Name der aktuellen Wikiseite zwischenspeichern
 6: $idalt = $ID;
 7:
 8: // angegeben Wikiseite einbinden
 9: $html = p_wiki_xhtml('[Name der Wikiseite]','',false);
10: $html = str_replace('<p>','',$html);
11: $html = str_replace('</p>','',$html);
12: echo $html;
13:
14: // Name der aktuellen Wikiseite wieder herstellen da
15: // die Funktion p_wiki_xhtml() die Variabel $ID überschreibt
16: $ID = $idalt;
17: ?>

Wikiseite aus aktuellem Namespace einbinden

Des öfteren bietet es sich auch an eine bestimmte Wikiseite aus dem jeweiligen aktuellen Namespace einzubinden. Dadurch ist es möglich für jeden Namespace andere Wikiseiten anzeigen zu lassen:

 1: <?php
 2: global $ID, $ACT;
 3:
 4: // Wikiseite nur einbinden wenn aktuelle Wikiseite nicht bearbeitet wird
 5: if ($ACT == 'show') {
 6:     // Name der aktuellen Wikiseite zwischenspeichern
 7:     $idalt = $ID;
 8:
 9:     // Name der Wikiseite in seine Bestandteile aufteilen
10:     $array = split(':',$ID);
11:
12:     // Anzahl der Teile feststellen
13:     $max = count($array);
14:
15:     // angegebene Wikiseite einbinden falls man sich nicht in einem Namespace befindet
16:     if ($max == 1) $html = p_wiki_xhtml('[Name der Wikiseite]','',false);
17:     else {
18:         $nr=$max-2;
19:
20:         // aktuellen Namespace ermitteln bzw. Pfad zusammenstellen
21:         for ($i=0;$i <= $nr; $i++) $text.= $array[$i].':';
22:
23:         // angebene Wikiseite im ermittelten Namespace einbinden
24:         $html = p_wiki_xhtml($text.'[Name der Wikiseite]','',false);
25:     }
26:
27:     // Ausgabe der angegebenen Wikiseite nur wenn diese auch vorhanden ist
28:     if (strlen($html) > 0) {
29:         echo '<div class="[Eigene CSS-Klasse]">'."\n";
30:         $html = str_replace('<p>','',$html);
31:         $html = str_replace('</p>','',$html);
32:         echo $html;
33:         echo "</div>\n";
34:     }
35:
36:     // Name der aktuellen Wikiseite wieder herstellen da
37:     // die Funktion p_wiki_xhtml() die Variabel $ID überschreibt
38:     $ID = $idalt;
39: }
40: ?>
php/dokuwiki/weitere_wikiseiten_im_template_einbinden.txt · Zuletzt geändert: 24.03.2011 22:06 (Externe Bearbeitung)
Quelle: http://stefanjahn.de/php:dokuwiki:weitere_wikiseiten_im_template_einbinden
Webseite: http://stefanjahn.de