Templating und Infoboxen in MediaWiki

Das Logo von MediaWikiMediaWiki ist das Framework, auf dem die verschiedensprachigen Wikipedia-Seiten laufen. Mit der MediaWiki-Software können aber nicht nur Beiträge geschrieben und untereinander verlinkt, sondern auch diverse Informationen optisch gut und übersichtlich dargestellt werden. Dies geschieht z.B. durch Infoboxen, wie ihr am Ende des Artikels lesen könnt. Doch dazu erst einmal ein paar Grundlagen:

Variablen und Konstanten

Wie in fast jeder Programmiersprache ist es auch beim Syntax von MediaWiki möglich Variablen und Konstanten zu definieren bzw. auf feste Systemkonstanten zurückzugreifen.
Beispiele für nützliche Konstanten sind z.B.

{{CURRENTVERSION}}
{{PAGENAME}}
{{REVISIONUSER}}
{{NUMBEROFPAGES}}

Wichtig ist dabei zu wissen, dass es bei der eingedeutschten MediaWiki-Version deutsche Pendants zu einigen Konstanten gibt. So sind zum Beispiel die folgenden Konstanten jeweils äquivalent:

{{PAGENAME}} {{SEITENNAME}}
{{CURRENTVERSION}} {{JETZIGE_VERSION}}

Templates und Vorlagen

Templates bzw. Vorlagen sind Bausteine, die in Seiten ausgespielt werden können. Dabei kann es sich um einen simplen Text oder um einen Baustein handeln, dem Variablen mitgegeben werden. Damit ein Template verwendet werden kann, muss dieses zuerst angelegt werden. Dazu einfach die folgende URL entsprechend abändern und dann auf den MediaWiki-Erstellen-Button klicken:

http://www.deine-mediawiki-installation.de/wiki/index.php?title=Vorlage:Beispielname

Ein dort hinterlegter Text kann nun durch einfügen von {{Beispielname}} auf jeder beliebigen MediaWiki-Seite dieser Installation ausgespielt werden.
Sollen noch Variablen verwendet werden, weil beispielsweise der Textbaustein auf mehreren Seiten, aber in anderem Kontext verwendet wird, werden die Variablen mit {{{[Zahl]}}} im Template markiert. Ausgespielt wird der Text dann durch:
{{Beispielname|Variablenwert 1|Variablenwert 2}}

Beispiel-Text der Vorlagenseite:
„Man nehme {{{0}}} Gramm Mehl, entsprechend Hefe, {{{1}}} Eier und {{{2}}} Liter Milch, verrühre das Ganze und fertig ist {{{3}}}.“

Auf der Zielseite wird der obige Text mit den Beispielwerten so eingegeben:

{{Beispielname|500|3|0,5|der Brotteig}}

Das Ergebnis ist nun:
„Man nehme 500 Gramm Mehl, entsprechend Hefe, 3 Eier und 0,5 Liter Milch, verrühre das Ganze und fertig ist der Brotteig.“

Infoboxen

Infoboxen eignen sich dazu um in einem MediaWiki-Beitrag Informationen kompakt und übersichtlich darzustellen. Es geht dabei über eine „normale“ Tabelle innerhalb eines Artikels hinaus. Der eigentliche Sinn einer Infobox ist es, sie bei gleichartigen Artikeln öfter wiederverwenden zu können und so die wesentlichen Informationen auch gleich zu strukturieren. Im Wikipedia-Bereich wären als Beispiele Beiträge über Bands, Schlachten und Fußballer – ich weiß, was für ein Zusammenhang 😀 – zu nennen, die auf der rechten Seite eine Infobox mit Kurzinformationen enthalten.
Um die Vorlage einer Infobox zu erzeugen, wird wie bei einer normalen Vorlage vorgegangen: Die noch nicht vorhandene Vorlagenseite wird aufgerufen und durch Klick auf den MediaWiki-Erstellen-Button diese erstellt. Als Beispiel-URL dafür die folgende URL – der vordere „Infobox“-Teil im Namen ist dabei für das spätere Einbinden wichtig. Er kann auch anders heißen, dann muss aber auch die Einbindung anders erfolgen:

http://www.deine-mediawiki-installation.de/wiki/index.php?title=Vorlage:Infobox_TestInfobox

Dort könnt ihr dann zum Beispiel Folgendes eingeben – bitte nicht erschrecken:

<onlyinclude>
  <div class="infobox float-right" id="vorlage-infobox-Name" summary="Infobox Name" style="border:1px solid lightsteelblue; padding:5px; width:25em; margin:0 0 0.5em 1em; font-size:85%; background:#F9F9F9;">
    <div style="background:lightsteelblue; margin-bottom:2px; text-align:center; font-size:118%; font-weight:bold; width:100%;"> {{#if: {{{Name|}}}|{{{Name}}}|{{PAGENAME}} }} </div>

{| style="width:100%; margin:0; text-align:left;"

|- 
!colspan="2"| {{#if:{{{Vorname-Param|}}} | Vorname {{!!}} {{{Vorname-Param}}} }}

|- 
!colspan="2"| {{#if:{{{Nachname-Param|}}} | Nachname {{!!}} {{{Nachname-Param}}} }}

|- 
!colspan="2"| {{#if:{{{Geburtsort-Param|}}} | Geburtsort {{!!}} {{{Geburtsort-Param}}} }}

|- 
!colspan="2"| {{#if:{{{Geburtsdatum-Param|}}} | Geburtstag {{!!}} {{{Geburtsdatum-Param}}} }}

|- 

|}
  </div>
</onlyinclude>

Zur kurzen Erklärung: Die Divs dienen nur der optischen Darstellung und sind normaler HTML-Code. Allgemein werden hier CSS- und HTML-Informationen verarbeitet, wie ihr an „style“ und „colspan“ erkennen könnt. Für euch entscheidend und interessanter sind die Parameter „#if“ und „{!!}“

Mit „#if“ beginnt eine ganz normale if-Anweisung. Im obigen Beispiel soll überprüft werden, ob beim Einbinden der Infobox bestimmte Parameter wie z.B. Vorname, Nachname etc. übergeben werden. Ist dies der Fall wird sowohl das Wort „Vorname“ als auch der Wert des Parameters Vorname ({{{Vorname-Param}}} ausgegeben. Ist das Parameter leer, wird nichts ausgeschrieben. „{!!}“ wird benötigt, weil im Controll-Block der if-Anweisung ein „|“ als Trennzeichen verwendet wird und die Funktion also nicht Funktionieren würde, wenn zu viele „|“-Zeichen in ihr enthalten wären. „{!!}“ wird später zu „||“ geparst und somit das Problem umgangen. Damit dies so funktionieren kann, am besten die bestehende Wikipedia-Vorlage einbinden http://de.wikipedia.org/wiki/Vorlage:!! bzw. den Quellcode von dort kopieren.

Um die Infobox nun einzubinden einfach auf die entsprechende Beitragsseite gehen und z.B. folgenden Code einfügen:

{{Infobox TestInfobox
 | Name = Textinfobox
 | Vorname-Param  = Max
 | Nachname-Param = Mustermann
 | Geburtsort-Param = Musterstadt
 | Geburtsdatum-Param = 23.08.1987
}}

Das Ergebnis sieht dann so aus:
Infobox im MediaWiki
Ihr könnt euch auch den Quelltext bestehender Vorlagen in z.B. dem deutschen Wikipedia ansehen und als Vorlage nehmen. Wie die jeweils genutzte Vorlage heißt, könnt ihr dem Quelltext des Artikels entnehmen. Dann die URL der jeweiligen Vorlage aufrufen z.B. http://de.wikipedia.org/wiki/Vorlage:Infobox_Band und dort auf „Quelltext anzeigen“ klicken. Dieser Quelltext kann teilweise sehr komplex sein, da in so großen Projekten wie Wikipedia inzwischen schon viel vordefiniert ist, aber lasst euch nicht entmutigen!

Das war jetzt nur ein sehr kurzer Überblick. Das ganze Thema ist noch viel komplexer. Ggf. werde ich noch weitere Informationen zu dem Thema MediaWiki bereit stellen, wenn ich an der Stelle weiter bin und Zeit habe. Viel Spaß! 🙂

http://de.wikipedia.org/wiki/Hilfe:Variablen
http://de.wikipedia.org/wiki/Hilfe:Vorlagenprogrammierung
http://www.mediawiki.org/wiki/Help:Magic_words
http://www.mediawiki.org/wiki/Help:Templates

http://de.wikipedia.org/wiki/Hilfe:Infoboxen
http://de.wikipedia.org/wiki/Wikipedia:WikiProjekt_Vorlagen/Anleitung:_Erstellen_einer_Infobox
http://en.wikipedia.org/wiki/Help:Designing_infoboxes
http://de.wikipedia.org/wiki/Hilfe:Vorlagen#Problem:_Senkrechter_Strich_in_Parameterwerten

Merken

Merken

Merken

Merken

26 Gedanken zu „Templating und Infoboxen in MediaWiki“

  1. Stundenlang bin ich im Netz und versuche Infoboxen hinzubekommen. Und? Nix is!

    Fünf Minuten auf zauberschmiede.de und es fluppt.

    Hut ab.

  2. Leider habe ich da einen Anzeigefehler.

    Produkt Infobox
    Vorname [[:Vorlage: ]] Max
    Nachname [[:Vorlage: ]] Mustermann
    Geburtsort [[:Vorlage: ]] lol
    Geburtstag [[:Vorlage: ]] 01012016

    Habe immer [[:Vorlage: ]] im leerraum stehen.

    1. Vielleicht liegt es an den eckigen Klammern. Die Doppelpunkte irritierten mich gerade auch ein wenig. Probiere es mal mit geschweiften Klammern 🙂
      Wenn das Problem dann noch besteht – ich bitte hier um Feedback – sehe ich mir das mal zu Hause die Tage an.

  3. {{Infobox Produkt
    | Name = Produkt Infobox
    | Vorname-Param = Max
    | Nachname-Param = Mustermann
    | Geburtsort-Param = lol
    | Geburtsdatum-Param = 01012016
    }}
    Hier der Code wie ich ihn eingefügt habe wird aber wie oben ausgegeben. Bin irgendwie Ratlos.
    Die Box wird angezeigt auch der Inhalt aber immer so wie oben dargestellt.
    #Benutze Mediawiki über Miraheze

    Grüße

    1. Und hier was in meiner Vorlage steht.

      {{#if: {{{Name|}}}|{{{Name}}}|{{PAGENAME}} }}

      {| style=“width:100%; margin:0; text-align:left;“

      |-
      !colspan=“2″| {{#if:{{{Vorname-Param|}}} | Vorname {{!!}} {{{Vorname-Param}}} }}

      |-
      !colspan=“2″| {{#if:{{{Nachname-Param|}}} | Nachname {{!!}} {{{Nachname-Param}}} }}

      |-
      !colspan=“2″| {{#if:{{{Geburtsort-Param|}}} | Geburtsort {{!!}} {{{Geburtsort-Param}}} }}

      |-
      !colspan=“2″| {{#if:{{{Geburtsdatum-Param|}}} | Geburtstag {{!!}} {{{Geburtsdatum-Param}}} }}

      |-

      |}

      1. Ich muss um Entschuldigung bitten, dass ich erst jetzt antworte. War einfach zu viel los. Deine Quelltexte – sowohl von der Vorlage, als auch von der Befüllung der Vorlage sieht richtig aus. Was mich jetzt noch interessieren würde, wäre wie in deinem Wiki die Vorlage für das !! aussieht.
        Sie müsste so wie bei Wikipedia aussehn: https://de.wikipedia.org/wiki/Vorlage:!!

        Bei dir zu finden unter:
        http://[wikiURL]/wiki/index.php?title=Vorlage:!! – so finde ich sie bei mir – oder
        http://[wikiURL]/wiki/Vorlage:!! – so ist die URL bei Wikipedia

  4. Hi. Ich hatte das gleiche Problem, wie thebrain. Ich glaube, er meint die „Vorlage:!!“. Nachdem ich diese meinem Wiki hinzugefügt hatte, funktionierte die Infobox-Vorlage einwandfrei.

    1. OK. Verständlich. Würde es zwar einfacher machen, aber ich kann einige Sachen von der Arbeit auch nicht zeigen, wenn ich nach einer Lösung suche, weil es eben intern ist. Schauen wir, wie wir das am besten hinkriegen 🙂

  5. Hallo zusammen,

    erstmal vielen Dank für die Anleitung.

    Es scheint alles zu funktionieren, bis auf das Problem, welches die anderen im Kommentarbereich schon 2016 geschrieben haben.

    Das Problem ist, ich kann die Vorlage für das !! nicht einbinden, da die angegebene URL zu wikipedia ins leere führt.
    Gibt es da einen neuen Link der aktualisiert werden kann, bzw. kann der Quellcode für die Vorlage hier rein geschrieben werden?

    Ich bedanke mich schon mal vorab für die Hilfe.

    1. Hallo,
      du hast mich leider in meinem Urlaub angeschrieben. Aber jetzt habe ich eben mal geschaut. Die neueren Media-Wikis wie auch Wikipedia scheinen ihre Vorlagen woanders liegen zu haben. Ich konnte auf die Schnelle noch nicht feststellen wo. Nur, dass es die Infobox in einem Wiki von mir auch nicht mehr funktioniert 🙁
      Sobald ich etwas Neues habe, werde ich den Artikel hier updaten. Zur Zeit hat das bei mir leider keine Priorität. Sry.
      Liebe Grüße
      Philipp

      1. Hallo Zusammen. Ich bin ebenso auf Philipp’s super Anleitung gestoßen und stehe jetzt vor dem selben Problem. Bin derzeit noch am basteln, aber es liegt wohl an der class=infobox.
        Mit der class=wikitable (https://www.mediawiki.org/wiki/Help:Tables) und dort tritt das Verhalten nicht auf.

        Ich halt euch auf dem Laufenden und berichte ggf. bei ner Lösung nach.

  6. Hallo nochmal.
    So richtig einfach zu durchschauen ist diese Mediawiki-Tabellenstruktur mit if-Abfragen ja leider nicht…

    Ich hab es jetzt wie folgt gelöst:

    Meine div class ist nun:
    div class=“div class=“wikitable“

    Meine Parameter werden nun wie folgt abgefragt:

    |-
    {{#if: {{{Produktionszeitraum|}}} |
    ! Produktionszeitraum
    {{!}} {{{Produktionszeitraum}}}
    }}

    Das klappt bei mir nun einwandfrei, jedoch werden bei den ersten paar Zeilen noch Leerzeilen ( eingefügt, die ich mir nicht erklären kann. Für meine Bedürfnisse ist das Thema aber jetzt befriedigt.

    Wichtig für alle:
    In der LocalSettings.php müssen die Parser-Funktionen geladen werden sonst können gewisse Zeichenfolgen nicht interpretiert werden {!!} . Das geht mit dem Zusatz

    wfLoadExtension(‚ParserFunctions‘);

  7. Ich bin nach langer Suche auch auf diese Seite gestoßen.
    Im Prinzip hat mir das schon gut geholfen. Allerdings funktioniert die Trennung der einzelnen Spalten nicht.

    Auch nicht mit den Hinweisen von „Operador“ mit der neuen DIV-Zuweisung und dem Code zur Produktionszeitraum-Infobox

    1. Danke für den Hinweis. Ich habe leider gerade im Moment nicht die Zeit zu einer Recherche. Aber wenn ich diese irgendwann erübrigen kann, werde ich den Artikel hier ergänzen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert