Zum Inhalt springen

Gespräch:MediaWiki Vorlagen

aus AufEinWort, der freien Forschung

Über diese Seite Gespräch

Vorlagen in MediaWiki
ChatGPT Sophos GPT-4
5. Januar 2024 n. Chr. erst.  
15:27 Uhr Ausgabe 03
Ausgabe 03
unüberarbeitet ungeprüft
keine Datei

Hallo Sophos, es geht um Vorlagen in MediaWiki

Sophos:

Hallo Nikolaos! Um welche Art von Vorlagen in MediaWiki geht es? Möchtest du grundlegende Informationen, konkrete Vorlagen erstellen oder bestehende Vorlagen anpassen? Lass mich wissen, wie ich unterstützen kann!

Nikolaos:

Ich brauche in einer Vielzahl von Webseiten in Wikimedia eine Tabelle für das Verzeichnis der Webseiten zu einem Thema. Wenn sich jedoch eine allgemeine Information darin ändert, muß ich jede Seite ändern, wenn ich nur eine einfache Tabelle je seite verwende. Ich brauche eine Tabelle als Vorlage mit allgemeinen Daten, die ich in jede Seite einfüge und in diese Tabelle Daten der Seite eintragen kann. Was schlägst du vor?

Sophos:


Um dein Ziel effizient umzusetzen, bietet MediaWiki die Möglichkeit, Vorlagen zu verwenden, die dynamische Inhalte unterstützen. Du kannst eine Vorlage erstellen, die eine Tabelle enthält, und diese in jede Seite einfügen. Die Vorlage kann so gestaltet werden, dass sie allgemeine Daten enthält, während spezifische Daten für jede Seite als Parameter übergeben werden. Hier ist ein Schritt-für-Schritt-Vorschlag:

1. Vorlage für die Tabelle erstellen

Erstelle eine neue Seite im Namensraum Vorlage:, z. B. Vorlage:WebseitenVerzeichnis. Diese Seite enthält den grundlegenden Aufbau der Tabelle mit Platzhaltern für Parameter.

Beispiel:

{| class="wikitable"
! Name der Seite
! Beschreibung
! Letzte Aktualisierung
|-
| {{{Seitenname}}}
| {{{Beschreibung}}}
| {{{Aktualisierung}}}
|}
  • {{{Seitenname}}}, {{{Beschreibung}}}, und {{{Aktualisierung}}} sind Platzhalter, die durch Parameterwerte ersetzt werden.

2. Vorlage in Seiten einfügen

Auf den einzelnen Seiten kannst du die Vorlage mit spezifischen Daten einfügen, z. B.:

{{WebseitenVerzeichnis
| Seitenname = Beispielseite 1
| Beschreibung = Eine Beispielseite mit nützlichen Informationen
| Aktualisierung = 5. Jan. 2025
}}

3. Änderungen zentral vornehmen

Wenn du die Struktur oder die allgemeinen Daten ändern möchtest, bearbeitest du nur die Vorlage Vorlage:WebseitenVerzeichnis. Alle eingebundenen Seiten übernehmen die Änderungen automatisch.


Erweiterungen und Tipps

  • Optional: Füge Standardwerte für Parameter hinzu, falls nicht immer alle Daten übergeben werden sollen:
    | {{{Seitenname|Unbekannt}}}
    
  • Mehrere Zeilen pro Tabelle: Ergänze die Vorlage so, dass sie mehrere Datensätze unterstützt:
    {| class="wikitable"
    ! Name der Seite
    ! Beschreibung
    ! Letzte Aktualisierung
    {{{Zeilen|}}}
    |}
    
    Auf den Seiten kannst du dann die Zeilen wie folgt einfügen:
    {{WebseitenVerzeichnis
    | Zeilen = 
    |-
    | Beispielseite 1
    | Beschreibung 1
    | 5. Jan. 2025
    |-
    | Beispielseite 2
    | Beschreibung 2
    | 4. Jan. 2025
    }}
    

Mit dieser Methode bleibt die Pflege deiner Tabellen effizient, da alle Änderungen an der Vorlage automatisch auf allen Seiten aktualisiert werden. Falls du Unterstützung beim Einrichten der Vorlage brauchst, sag Bescheid!

Nikolaos:

Im Grunde sind es MetaDaten zu dem Inhalt der Webseiten. Wenn ich eine derartige Tabelle verwende, kann ich diese nicht auslesen, vergleichsweise eine Gesamttabelle daraus erzeugen. Gibt es da Besseres?

Sophos:


Um Metadaten effizient zu verwalten und gleichzeitig die Möglichkeit zu haben, diese für eine Gesamttabelle oder andere Übersichten zu extrahieren, gibt es in MediaWiki folgende Ansätze, die deine Anforderungen besser erfüllen:


1. Semantic MediaWiki (SMW)

Semantic MediaWiki ist eine leistungsstarke Erweiterung, die Metadaten zu Seiten strukturiert speichert und abfragbar macht. Damit kannst du Metadaten direkt auf den Seiten definieren und später zentral abrufen und in Tabellen oder Listen darstellen.

Vorteile:

  • Metadaten können auf den Seiten einfach definiert werden.
  • Du kannst die Daten abfragen und automatisiert in eine Gesamttabelle oder andere Formate ausgeben.
  • Änderungen an den Daten sind flexibel und müssen nur an einer Stelle vorgenommen werden.

Beispiel:

  1. Metadaten auf der Seite definieren:
    [[Kategorie:WebseitenVerzeichnis]]
    [[Seitenname::Beispielseite 1]]
    [[Beschreibung::Eine Beispielseite mit nützlichen Informationen]]
    [[Aktualisierung::2025-01-05]]
    
  2. Abfrage auf einer Übersichtsseite:
    {{#ask: [[Kategorie:WebseitenVerzeichnis]]
    | ?Seitenname
    | ?Beschreibung
    | ?Aktualisierung
    | format=table
    | mainlabel=Seite
    }}
    

Ergebnis: Eine automatisch generierte Tabelle mit allen definierten Metadaten.


2. Cargo-Erweiterung

Die Cargo-Erweiterung ist eine Alternative zu SMW und ermöglicht die Speicherung strukturierter Daten in einer SQL-Datenbank. Sie bietet leistungsstarke Abfragemöglichkeiten und ist einfacher zu konfigurieren.

Vorteile:

  • Daten werden in Datenbanktabellen gespeichert und sind leicht abfragbar.
  • Du kannst die Daten flexibel in verschiedenen Formaten (z. B. Tabellen, Diagramme) ausgeben.

Beispiel:

  1. Daten auf einer Seite speichern:
    {{#cargo_store:
      Seitenname=Beispielseite 1 |
      Beschreibung=Eine Beispielseite mit nützlichen Informationen |
      Aktualisierung=2025-01-05
    }}
    
  2. Abfrage für eine Gesamttabelle:
    {{#cargo_query:
      tables=webseitenverzeichnis |
      fields=Seitenname, Beschreibung, Aktualisierung |
      format=table
    }}
    

3. Datenstruktur mit Lua-Modulen

Wenn SMW oder Cargo nicht verfügbar sind, kannst du mit Lua-Modulen und JSON arbeiten, um strukturierte Daten zu verwalten und dynamische Tabellen zu generieren.

Beispiel:

  1. Daten in einem JSON-Format speichern: Erstelle eine Modulseite Modul:WebseitenDaten:
    return {
      { Seitenname = "Beispielseite 1", Beschreibung = "Eine Beispielseite", Aktualisierung = "2025-01-05" },
      { Seitenname = "Beispielseite 2", Beschreibung = "Eine weitere Seite", Aktualisierung = "2025-01-04" }
    }
    
  2. Daten in einer Tabelle ausgeben: Mit einem weiteren Modul oder Vorlage kannst du die Daten dynamisch als Tabelle auf einer Seite anzeigen lassen.

Fazit: Empfohlene Lösung

  • Für einfache und mächtige Metadatenverwaltung: Nutze Semantic MediaWiki.
  • Für datenbankähnliche Verwaltung: Verwende die Cargo-Erweiterung.
  • Für maximale Kontrolle: Setze auf Lua-Module.

Falls du mehr zu einer der Methoden benötigst, kann ich dir bei der Einrichtung helfen!

Nikolaos:

Kann ich auch Daten aus einer bestimmten Zeile einer bestimmten Tabelle auf einer Seite in einer anderen Seite anzeigen lassen?

Sophos:


Ja, das ist möglich! In MediaWiki gibt es mehrere Ansätze, um Daten aus einer bestimmten Zeile einer Tabelle auf einer anderen Seite anzuzeigen. Hier sind die praktikabelsten Methoden:


1. Parserfunktionen und Vorlagen

Mit Vorlagen kannst du gezielt Daten aus Tabellen auf einer Seite extrahieren und auf einer anderen Seite anzeigen.

Vorgehen:

  1. Vorlage für die Tabelle erstellen Erstelle eine Vorlage, z. B. Vorlage:MeineTabelle, mit folgendem Inhalt:
    {| class="wikitable"
    ! ID !! Name !! Beschreibung
    |-
    | 1 || Artikel 1 || Eine Beschreibung von Artikel 1
    |-
    | 2 || Artikel 2 || Eine Beschreibung von Artikel 2
    |-
    | 3 || Artikel 3 || Eine Beschreibung von Artikel 3
    |}
    
  2. Vorlage zur Datenausgabe erstellen Erstelle eine zweite Vorlage, z. B. Vorlage:DatenZeile, mit folgendem Inhalt:
    {{#switch:{{{ID|}}}
      | 1 = Artikel 1: Eine Beschreibung von Artikel 1
      | 2 = Artikel 2: Eine Beschreibung von Artikel 2
      | 3 = Artikel 3: Eine Beschreibung von Artikel 3
      | #default = Kein Eintrag gefunden
    }}
    
  3. Auf einer anderen Seite die Zeile einfügen Auf der Zielseite kannst du dann spezifische Zeilen wie folgt einfügen:
    {{DatenZeile|ID=2}}
    
    Ergebnis: Artikel 2: Eine Beschreibung von Artikel 2

2. Semantic MediaWiki (SMW)

Wenn du Semantic MediaWiki nutzt, kannst du die Daten gezielt abfragen und auf anderen Seiten darstellen.

Vorgehen:

  1. Daten auf der Quellseite speichern:
    [[Kategorie:WebseitenDaten]]
    [[ID::1]]
    [[Name::Artikel 1]]
    [[Beschreibung::Eine Beschreibung von Artikel 1]]
    
  2. Daten auf einer anderen Seite abrufen:
    {{#ask: [[ID::2]]
    | ?Name
    | ?Beschreibung
    | mainlabel=-
    }}
    
    Ergebnis: Die Abfrage gibt nur die Daten der Zeile mit ID=2 aus.

3. Lua-Module für flexible Datenverwaltung

Mit Lua kannst du spezifische Zeilen aus Tabellen dynamisch abrufen und an anderer Stelle anzeigen.

Vorgehen:

  1. Daten in einem Modul speichern: Erstelle eine Modulseite Modul:TabellenDaten:
    return {
      { ID = 1, Name = "Artikel 1", Beschreibung = "Eine Beschreibung von Artikel 1" },
      { ID = 2, Name = "Artikel 2", Beschreibung = "Eine Beschreibung von Artikel 2" },
      { ID = 3, Name = "Artikel 3", Beschreibung = "Eine Beschreibung von Artikel 3" }
    }
    
  2. Lua-Modul für die Anzeige nutzen: Erstelle ein weiteres Modul, z. B. Modul:ZeilenAnzeige:
    local daten = require("Modul:TabellenDaten")
    
    function getZeile(id)
      for _, eintrag in ipairs(daten) do
        if eintrag.ID == id then
          return "Name: " .. eintrag.Name .. ", Beschreibung: " .. eintrag.Beschreibung
        end
      end
      return "Kein Eintrag gefunden"
    end
    
    return {
      getZeile = getZeile
    }
    
  3. Zeile auf einer anderen Seite anzeigen: Auf einer beliebigen Seite kannst du das Modul aufrufen:
    {{#invoke:ZeilenAnzeige|getZeile|2}}
    
    Ergebnis: Name: Artikel 2, Beschreibung: Eine Beschreibung von Artikel 2

Fazit

  • Für einfache statische Tabellen: Nutze Parserfunktionen und Vorlagen.
  • Für flexible Abfragen und Metadaten: Verwende Semantic MediaWiki.
  • Für maximale Anpassungsfähigkeit und Wiederverwendbarkeit: Lua-Module sind ideal.

Falls du Hilfe bei der Implementierung benötigst, stehe ich gern zur Verfügung!

Nikolaos:

Du scheinst Lua für alle Fälle leistungsfähiger zu halten - ich hab damit noch nicht gearbeitet – was muß ich installieren um auf meinem MediaWiki Lua nutzen zu können? Mein MediaWiki läuft auf MAMP und OSX

2/2

Sophos:


Um Lua auf deinem MediaWiki unter MAMP und macOS zu nutzen, musst du die Scribunto-Erweiterung installieren. Diese Erweiterung ermöglicht es, Lua-Module in deinem Wiki auszuführen. Hier ist eine Schritt-für-Schritt-Anleitung:


1. Voraussetzungen überprüfen

  • Du hast MediaWiki bereits installiert und es läuft über MAMP.
  • PHP-Version: PHP 7.4 oder höher wird empfohlen.
  • MySQL oder eine andere kompatible Datenbank ist eingerichtet.

2. Scribunto-Erweiterung herunterladen und installieren

  1. Scribunto herunterladen: Lade die Scribunto-Erweiterung von der offiziellen MediaWiki-Seite herunter:
    • Scribunto Download Alternativ kannst du die Erweiterung direkt über Git herunterladen (empfohlen):
      cd /path/to/your/mediawiki/extensions
      git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto.git
      
  2. Aktivieren der Erweiterung: Füge die folgende Zeile in die Datei LocalSettings.php deines MediaWiki hinzu (normalerweise im Hauptverzeichnis deines Wikis zu finden):
    wfLoadExtension('Scribunto');
    
  3. Prüfen, ob Lua installiert ist: Scribunto verwendet normalerweise die PHP-basierten Lua-Interpreter, die bereits enthalten sind. Falls du den nativen Lua-Interpreter bevorzugst, installiere ihn mit:
    brew install lua
    
    Stelle sicher, dass Lua korrekt installiert wurde, indem du im Terminal den folgenden Befehl ausführst:
    lua -v
    
    Dies sollte die installierte Lua-Version anzeigen.
  4. Konfigurieren von Scribunto (optional): Du kannst in LocalSettings.php zusätzliche Einstellungen vornehmen, z. B.:
    $wgScribuntoDefaultEngine = 'luastandalone'; // Verwende den nativen Lua-Interpreter
    

3. Module testen

Nach der Installation kannst du ein einfaches Lua-Modul erstellen, um sicherzustellen, dass alles funktioniert.

  1. Modul erstellen: Erstelle eine neue Seite mit dem Namen Modul:Test und füge folgendes Beispiel ein:
    return "Hallo, Lua läuft erfolgreich!"
    
  2. Modul auf einer Seite aufrufen: Erstelle eine Seite und füge diesen Code ein:
    {{#invoke:Test|}}
    
    Ergebnis: Die Seite sollte „Hallo, Lua läuft erfolgreich!“ anzeigen.

4. Fehlerbehebung

Falls du auf Probleme stößt:

  • PHP-Fehlermeldungen: Überprüfe die PHP-Logs in MAMP.
  • Fehlende Berechtigungen: Stelle sicher, dass der extensions-Ordner die richtigen Berechtigungen hat.
  • MediaWiki-Version: Stelle sicher, dass Scribunto mit deiner MediaWiki-Version kompatibel ist.

Fazit

Mit Scribunto kannst du Lua nahtlos in MediaWiki integrieren und von dessen Flexibilität und Leistung profitieren. Wenn du Hilfe bei der Einrichtung oder ersten Modulen brauchst, lass es mich wissen!

Nikolaos:

Ok Danke vorerst. Ich muß mich später darum kümmern und werde den Chat dann wieder aufgreifen.

Sophos:


Gern geschehen, Nikolaos! Viel Erfolg bei der Umsetzung – und sobald du wieder daran arbeiten möchtest, bin ich bereit, dich zu unterstützen. Bis später! 😊