Inhalt hinzufuegen
Achtung: Diese Funktion ist mittlerweile veraltet. Seit MediaWiki 1.5 gibt es MediaWiki:Sidebar
Inhaltsverzeichnis
Inhaltsverzeichnis für die PUG
Das MediaWiki wurde als Wissensdatenbank entwicket und ist dafür echt Klasse. Nun wird es auch gerne für Hompages insbesondere von Usergroups verwendet. Dafür ist die Navigation noch nicht so vollständig, wie ich mir es persönlich vorstelle.
Ich hab mir deshalb MediaWiki zuhause installiert und hier (http://meta.wikimedia.org/wiki/Help:Anpassen) ein Dokument gefunden, welches die nötigen Tipps für die Anpassung gibt.
Das folgende ist ein daraus entstandenes Kochrezept für die PUG:
Folgende Ãnderungen sind nötig:
Datei LocalSettings.php
$wgCustomLinks = array ( array( 'text'=>'Thema_1', 'href'=>'Thema_1-url'), array( 'text'=>'Thema_2', 'href'=>'Thema_2-url'), );
So könnte man es einfach irgendwo in die 'LocalSettings.php' einfügen, frühestens kurz vor '$wgSitename'.
Da ich diese Vorgehensweise nervig finde, weil man immer in den Quellcode reinmuÃ, wird '$wgCustomLinks' nun automatisch erzeugt. Dazu mehr im nächsten Absschnitt SkinTemplate.php.
Datei includes/SkinTemplate.php
Etwa zeile 355 innerhalb von 'function outputPage()'
$tpl->set( 'navigation_urls', $this->buildNavigationUrls() ); $tpl->set( 'nav_urls', $this->buildNavUrls() ); // das hier einfügen:------------------------------------------------ $tpl->set( 'custom_urls', $this->buildCustomUrls() ); // Ernst ------------------------------------------------------------ // execute template
Bei Zeile 670 befindet sich die 'function buildNavigationUrls ()' Diese Funktion wird kopiert
und etwas verändert. Zusätzlich habe ich ein bischen Code zur Erzeugung von '$wgCustomLinks' hinzugefügt.
Das sieht dann so aus:
function buildCustomUrls () { $fname = 'SkinTemplate::buildNavigationUrls'; wfProfileIn( $fname ); // ----- Hier wird $wgCustomLinks automatisch erzeugt: ------- // global $wgCustomLinks; $wgCustomLinks = array (); global $wgDBserver, $wgDBname, $wgDBuser, $wgDBpassword, $wgDBprefix; $db = new Database($wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname); $res = $db->query( "SELECT cur_title, cur_text FROM cur WHERE cur_title like 'Inhalt' LIMIT 1" ); $row = $db->fetchRow( $res ); $linkarray = explode('[[', $row['cur_text']); foreach ( $linkarray as $lb ) { $link = ereg_replace(']].*', '', $lb); // echo "+++" . $link . ' <br>'; if ( $link != '' ) $wgCustomLinks[] = array( 'text'=>"$link", 'href'=>"$link-url"); } // -------- Ende ------------ $result = array(); foreach ( $wgCustomLinks as $link ) { $text = wfMsg( $link['text'] ); wfProfileIn( "$fname-{$link['text']}" ); if ($text != '-') { $dest = wfMsgForContent( $link['href'] ); wfProfileIn( "$fname-{$link['text']}2" ); $result[] = array( 'text' => $text, 'href' => $this->makeInternalOrExternalUrl( $dest ), 'id' => 'n-'.$link['text'] ); wfProfileOut( "$fname-{$link['text']}2" ); } wfProfileOut( "$fname-{$link['text']}" ); } wfProfileOut( $fname ); return $result; }
Einfach in der Datei 'includes/SkinTemplate.php' unter der Funktion 'buildNavigationUrls ()' einfügen.
Datei skins/MonoBook.php
Das ist die Skin-Template Datei. Da muà natürlich was rein, damit unser Abschitt auch angezeigt wird.
<div class="portlet" id="p-nav"> <h5><?php $this->msg('customlinks') ?></h5> <div class="pBody"> <ul> <?php foreach($this->data['custom_urls'] as $navlink) { ?> <li id="<?php echo htmlspecialchars($navlink['id']) ?>"><a href="<?php echo htmlspecialchars($navlink['href']) ?>"><?php echo htmlspecialchars($navlink['text']) ?></a></li><?php } ?> </ul> </div> </div>
Auch hier gibt es wieder mal ein Abschnitt, der Kopiert und verändert wurde. Also den Abschitt mit dem 'id="p-nav"' suchen und den Codeschnipsel darüber/darunter einfügen.
Was soll das?
Das Original (http://meta.wikimedia.org/wiki/Help:Anpassen) ist eigentlich schon sehr gut geschrieben. Ich hofffe nur, dass die Ãnderungen nun supereinfach gehen.
Ja, und viel wichtiger: der Abschnitt für die LocalSettings.php ist noch nicht fertig. Bei jeder Veränderung des Inhaltsverzeichnisses müÃte jemand da rein. Da will ich mir noch was passendes dazu ausdenken :-)
So. Nun ist SkinTemplate.php fertig! Die Links lassen sich jetzt ohne den Quellcode jedesmal zu verändern setzen.
Die Bedienung:
1. "PUG:Inhalt" anlegen. Und folgendermaÃen füllen:
[[Inhalt]] [[FAQ]] [[Benutzer]] [[Workshops]] ...
Das mit den eckigen Klammern sollte ich vielleicht weglassen.
2. Zu jedem Keyword zwei Links anlegen wie zum Beispiel: MediaWiki:FAQ mit dem Inhalt:
FAQ
um das Navigationsfeld zu beschriften und
eine Datei MediaWiki:FAQ-url mit dem Inhalt
Faq
als Link.
Den Titel der "customlinks" setzt man in languages/Language.php:
'customlinks' => 'PUG - Links',
Ernst.