Stefans Wiki



DokuWiki Navigation

Ziel

Auf der Wikiseite soll eine hierarchische Navigation angezeigt werden. Dabei wird ausgehend von der Starseite des Wikis bis zur angezeigten Seite jeder untergeordneter Namensraum entsprechend angezeigt und verlinkt. Beispiel:

Startseite / Namensraum / Unternamensraum / Wikiseite

Lösung

Das Template für die Anzeige der Wikiseiten wird so angepasst, das eine entsprechende hierarchische Navigation angezeigt wird.

Code

/inc/local.php

 1: /**
 2:  * @author     Stefan Jahn
 3:  * @copyright  Copyright (C) 2006 Stefan Jahn
 4:  * @link       http://stefanjahn.de
 5:  * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 6:  * @version    20080104
 7:  *
 8:  * Erstellt am 01.08.2006
 9:  *
10:  * Plugin für DokuWiki. Erstellt aus den Bildern eines Namensraums eine
11:  * Galerie. Auf Wunsch werden die Thumbnails permanent abgespeichert.
12:  *
13:  * This program is free software; you can redistribute it and/or
14:  * modify it under the terms of the GNU General Public License
15:  * as published by the Free Software Foundation; either version 2
16:  * of the License, or (at your option) any later version.
17:  *
18:  * This program is distributed in the hope that it will be useful,
19:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21:  * GNU General Public License for more details.
22:  *
23:  * You should have received a copy of the GNU General Public License
24:  * along with this program; if not, write to the Free Software
25:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
26:  */
27:
28: function local_navigation() {
29:     global $conf;
30:     global $ID;
31:     global $lang;
32:
33:     print '<strong>Wo bin ich:</strong> ';
34:
35:     $page = '';
36:     $start = strtolower($conf['start']);
37:
38:     // Home-Link mit Namen der Webseite erstellen
39:     tpl_link(wl($conf['start']), $conf['title'], 'title="'.$conf['title'].'"'); // Name des Wiki als Linktext
40:     // tpl_link(wl($conf['start']), 'Startseite', 'title="Startseite"'); // Startseite als Linktext
41:
42:     // ID auftrennen
43:     $parts = explode(':', $ID);
44:
45:     // Ende falls man sich auf der Startseite (Home) befindet
46:     if (strtolower($ID) == $start) return;
47:
48:     // Einzelne Teile der ID durchgehen
49:     foreach ($parts as $part) {
50:         print ' / ';
51:         $page .= $part;
52:
53:         $pos = $page;
54:
55:         // Bei Benutzung von Überschriften den Seitennamen des Namenraum ermitteln
56:         if ($conf['useheading']) {
57:             if ($page.':'.$start == $ID) $pos = $page.':'.$start;
58:         }
59:
60:         // ID für besser Ausgabe als Name umwandeln
61:         $name = ucwords(str_replace($conf['sepchar'], ' ', $part));
62:
63:         // Bei Benutzung von Überschriften den Seitenname ermitteln
64:         if ($conf['useheading']) {
65:             $title = p_get_first_heading($pos);
66:             if ($title) $name = $title;
67:         }
68:
69:         if ($page.':'.$start == $ID or $page == $ID) {
70:             // Aktuelle Seite - Backlinks erzeugen
71:             tpl_link(wl($ID,'do=backlink'), $name, 'title="Backlinks zu '.$ID.'"');
72:             break;
73:         } else {
74:             if (file_exists(wikiFN($page))) {
75:                 // Seite vorhanden
76:                 tpl_link(wl($page), $name, 'title="'.$page.'"');
77:             } elseif (file_exists(wikiFN($page.':'.$start))) {
78:                 // Seite nicht vorhanden, aber Namensraum ist vorhanden
79:                 $name = ucwords(str_replace($conf['sepchar'],' ',$part));
80:                 if ($conf['useheading']) {
81:                     // Bei Benutzung von Überschriften den Seitennamen des Namensraum ermitteln
82:                     $title = p_get_first_heading($page.':'.$start);
83:                     if ($title) $name = $title;
84:                 }
85:                 tpl_link(wl($page.':'.$start), $name, 'title="'.$page.'"');
86:             } else {
87:                 // Seite nicht vorhanden
88:                 print $name;
89:             }
90:         }
91:
92:         $page .= ':';
93:     }
94: }

Installation

Füge den oben aufgefürhrten Code in deiner Datei inc/local.php ein. Damit wird die Funktion local_navigation() für das Wiki allgemein verfügbar. Sollte die Datei local.php im Verzeichnis inc nicht existieren, so lege diese an.

Nun kann im Template an jeder beliebiger Stelle die Funktion local_navigation() eingefügt werden:

<?php local_navigation()?>

Dort wo die Funktion im Template aufgerufen wird, wird nun die entsprechende Navigation angezeigt bzw. eingefügt.

Änderungen

  • 01.08.2006: Start der Programmierung.
  • 17.09.2006: Fehler beim Erkennen der Startseite (Home) behoben.
  • 07.05.2007: Fehler in der if-Abfrage für die Erkennung der Startseite behoben.
php/dokuwiki/navigation.txt · Zuletzt geändert: 24.03.2011 22:06 (Externe Bearbeitung)
Quelle: http://stefanjahn.de/php:dokuwiki:navigation
Webseite: http://stefanjahn.de