Wiki2joomla
Aus TransArte
Inhaltsverzeichnis |
[bearbeiten] Vorwort
na schön, ich benötige Mediawiki innerhalb einer Joomla(Mambo)seite und zwar ohne iframe. Benutzerrechte lasse ich aussen vor, da das Wiki Konzept eh transparent ist.
[bearbeiten] Vorbereitungen
Zuerst muss natürlich sowohl Joomla >= 1.0 oder Mambo >= 4.5.2, als auch Mediawiki 1.5 >= Beta4 auf dem selben Server selbstständig funktionieren.
(Mein Gallery2Wiki funktioniert ebenfalls)
[bearbeiten] Anpassung Mediawiki
Kopiere die Einstiegs Datei im Mediawiki-Ordner index.php nach render.php und öffne letztere.
Füge vor der Zeile
$wgOut->output();
(fast am Schluss) diesen Befehl ein
$wgOut->mArticleBodyOnly = true;
Er veranlasst Mediawiki nur den effektiven Inhalt aus der Datenbank auszugeben, ohne Navigation, css etc.
(Ich bin sicher es gibt effizientere Methoden, denn Mediawiki bereitet dennoch alles vor. Aber vorerst soll es ausreichen. Schön wäre es, so wie ich es in Gallery2 mache, direkt auf die API von Mediawiki zuzugreifen. Aber ich muss einfach Termingerecht liefern. Dokumentation und Cleanup folgt danach. ) Zum testen rufst du eine existierende Seite aus deinem Mediawiki auf. z.B http://www.transarte.net/mediawiki/index.php/Hauptseite und änderst das Wort index in render um. Es sollte so etwas ausgeben: [Beispiel]
Damit wäre die Anpassung von Mediawiki beendet.
[bearbeiten] Anpassung Joomla(Mambo)
Zuerst muss eine dynamische Seite (früher hiess das statisch - glaub ich) erstellt werden. Ich nenn sie Platzhalterseite. Einziger Inhalt ist :
{{wikiresult}}
und zwar mit all den Klammer vor und danach!!!
merke dir die id der Seite. Damit die Seite später in einem Umfeld von Modulen etc. erscheint, wird noch eine Itemid benötigt. (im Code sind die Begriffe verkehrt herum). Beide bekommst du, wenn du einfach einen Menueintrag zu diesen Leerseite erstellst und in der URL id und ItemId aufschreibst. Der Menueintrag kannst du später Löschen (glaub ich zumindest)
Jetzt musst du noch meinen Mambot herunterladen und installieren. mosbubble.zip
Wenn das geklappt hat, musst du das Mambot noch aktivieren und die Einstellungen vornehmen. Ausgabe ID: hier kommt die vorher gemerkte ID hinein
ItemId: was wohl?
[bearbeiten] Patche von index.php im Joomla(Mambo)
suche den Begriff
/* mambelfish addition and core end */
füge anschliessend diesen Code ein
/* ***************************/
if ($Itemid==null || $Itemid==0 ) { // catch if no (item)id but a wiki request
$dat = split("/wiki/", $_SERVER["REQUEST_URI"], 2 ); // isit a wiki request in SEF mode?
if(count($dat > 1) ){
$globalWikiSearchString = $dat[1]; // to be used in mosbubble.php:botBubble()
/* get params */
$query = "SELECT id FROM #__mambots WHERE element = 'mosbubble' AND folder = 'content'";
$database->setQuery( $query );
$id = $database->loadResult();
$mambot = new mosMambot( $database );
$mambot->load( $id );
$params =& new mosParameters( $mambot->params );
$id = $params->get( 'outputid', );
$itemId = $params->get( 'outputitemid', );
$_GET['id'] = $id;
$_REQUEST['id'] = $id;
$_GET['Itemid'] = $Itemid;
$_REQUEST['Itemid'] = $Itemid;
$QUERY_STRING = "option=com_content&task=view&id=$id&Itemid=$Itemid";
}
}
/******************/
Dieser Code ist nur notwendig, wenn auf SEF/SEO umgeschaltet wird, also das in der URL /1/1 steht statt id=1&itemId=1 etc.
Überhaupt ist viel Code ausschliesslich für den SEF Fall eingebaut
[bearbeiten] Verwendung
Die beiden Muster [[Begriff]] oder {{Begriff}} werden diese durch die entsprechenden Mediawikiinformationen ausgetauscht. Im Falle [[Begriff]] wird ein link auf die entsprechende Mediawiki Seite gesetzt. Resp. es verweist auf die neu erstellte dynamische Seite mit einem zusätzlichen Suchbegriff. Wenn {{Begriff}} auf einer Seite vorkommt, dann wird kein Link erzeugt, sonder der Inhalt der entsprechenden Wikiseite wird eingefügt. Das entspricht gant der Template syntax in Mediawiki.
Wenn Gallery2 im Mediawiki eingebunden wurde, können auch Bilder mit [ [ Foto:1758 ] ] eingebunden werden
[bearbeiten] Tempo
Über die Geschwindikeit muss ich mir noch Gedanken machen, Wiki ist Sauschnell, aber Mambo werkelt gemütlich vor sich hin. Die Abfrage an Wiki kommt zu einem ungünstigen Zeitpunkt im Renderprozess von Mambo. Darum stockt es ein wenig. Die hohe Geschwindigkeit von Mediawiki ist natürlich historisch bedingt. Nachdem die Server zusammenbrachen musste da einiges von Grund auf verbessert werden. Memcached ist fantastisch als mysql Cacher.
[bearbeiten] Über Code
Wenn ich den Code von Gallery2, Mediawiki und Mambo vergleiche, so schneidet Mambo am schlechtesten ab. Zwar verwenden sie Objekte und Klassen, aber Code wie:
<?php
function xy(){
?> <td>
<?php
}
?>
lässt mir die Haare zu Berge stehen. Aus der Benutzerseite sieht es anders aus. Mambo ist chic, Mediawiki und Gallery2 sind zwar gestaltbar, aber viele sehen gleich aus)
Sobald ein Release von Joomla herauskommt, passe ich den mambot an und baue noch etwas Beschleunigung ein.
[bearbeiten] Tipp
im Mediawiki kommt es vor, dass Änderungen im Code nicht sofort sichtbar werden. Anwender merken nichts davon, aber Entwickler fluchen. Um den Cache in Mediawiki zu löschen gibst du statt
/mediawiki/index.php/MeineSeite
oder
/mediawiki/index.php?title=MeineSeite
neu
/mediawiki/index.php?title=MeineSeite&action=purge
ein. Das veranlasst die Leerung des Caches dieser Seite.
