Zum Inhalt springen

Gespräch:Kategorie in MediaWiki

aus AufEinWort, der freien Forschung

Über diese Seite Gespräch

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

Nikolaos:

Hallo Sophos, Thema: Kategorie in MediaWiki Seiten

Sophos:


Hallo Nikolaos,

wie kann ich dir in Bezug auf Kategorien in MediaWiki-Seiten helfen? Geht es um die richtige Verwendung, die Erstellung oder um eine spezifische Fragestellung im Zusammenhang mit deinem Projekt?

Nikolaos:

Ich habe oft Lange Seiten im MediaWiki und muß dann weit nach unten scrollen, wenn ich wissen will, welche Kategorien vergeben sind. Wie kann ich die Kategorien mir oben oder in der Seite anzeigen lassen?

Sophos:


Um die Kategorien in MediaWiki-Seiten oben oder an einer bestimmten Stelle in der Seite anzuzeigen, kannst du folgende Ansätze nutzen:

1. Manuelles Einfügen der Kategorien oben

Du kannst die Kategorien manuell am Seitenanfang einfügen, indem du den Code wie folgt platzierst:

[[Kategorie:Beispielkategorie]]

Das zeigt die Kategorien direkt an der gewünschten Stelle. Beachte, dass sie dann sowohl oben als auch unten angezeigt werden, da MediaWiki Kategorien standardmäßig immer unten listet.

2. Verwendung von Parserfunktionen

Eine elegantere Methode ist die Nutzung von Parserfunktionen mit einer Vorlage. Du kannst eine Vorlage erstellen, die die Kategorien anzeigt, z. B.:

Schritt 1: Vorlage erstellen

  1. Erstelle eine neue Vorlage, z. B. Vorlage:KategorienOben.
  2. Füge folgenden Code hinzu:
    1. <noinclude>
      Dies ist eine Vorlage, um Kategorien oben anzuzeigen.
      </noinclude>
      <includeonly>
      {{#if:{{PAGENAME}}|<div class="kategorien-oben">[[Kategorie:Beispielkategorie]]</div>|}}
      </includeonly>
      

Schritt 2: Vorlage in der Seite einbinden

Füge am Seitenanfang Folgendes ein:

{{KategorienOben}}

3. MediaWiki CSS/JS anpassen

Wenn du Kategorien automatisch immer oben auf der Seite anzeigen möchtest, kannst du die MediaWiki-Oberfläche anpassen:

CSS-Anpassung

Bearbeite die Datei MediaWiki:Common.css:

#catlinks {
    position: fixed;
    top: 10px;
    left: 10px;
    z-index: 1000;
}

Das verschiebt den Kategorien-Bereich nach oben.

JS-Erweiterung

Bearbeite die Datei MediaWiki:Common.js, um Kategorien an einer bestimmten Stelle zu duplizieren:

document.addEventListener('DOMContentLoaded', function () {
    var catlinks = document.getElementById('catlinks');
    if (catlinks) {
        var cloned = catlinks.cloneNode(true);
        document.body.insertBefore(cloned, document.body.firstChild);
    }
});

Damit werden die Kategorien automatisch auch oben angezeigt.

4. Erweiterung installieren

Falls du Zugriff auf die MediaWiki-Installation hast, kannst du die CategoryTree-Erweiterung installieren, um die Kategorien flexibel auf Seiten darzustellen.

Welche Methode entspricht am ehesten deinen Anforderungen?

Nikolaos:

Warscheinlich ist die Anzeige der Kategorien oben und unten nützlich. Die Erweiterung Kategoriebaum habe ich installiert nur weiß ich nicht, wie diese Erweiterung darin nützlich sein kann.

Sophos:


Die Erweiterung Kategoriebaum (CategoryTree) kann hilfreich sein, wenn du Kategorien strukturiert und interaktiv darstellen möchtest. Hier sind einige Möglichkeiten, wie du die Erweiterung nutzen kannst, um Kategorien sowohl oben als auch unten anzuzeigen:


1. Grundlegende Nutzung von Kategoriebaum

Mit der Erweiterung kannst du an einer beliebigen Stelle in einer Seite einen interaktiven Baum anzeigen lassen, der die Hierarchie der Kategorien zeigt. Dafür verwendest du den folgenden Tag:

<categorytree mode="all">Beispielkategorie</categorytree>

Dieser Code zeigt die Unterkategorien und Seiten der Kategorie Beispielkategorie an. Du kannst ihn am Anfang deiner Seite einfügen, um direkt zu sehen, in welchen Kategorien die Seite eingebettet ist.


2. Kategorien der aktuellen Seite anzeigen

Du kannst die Kategorien der aktuellen Seite dynamisch oben anzeigen lassen, indem du einen kleinen Trick anwendest:

  • mode="parents" zeigt nur die übergeordneten Kategorien der aktuellen Seite.
  • hideroot="on" blendet die Wurzelkategorie aus, sodass nur die relevanten Kategorien angezeigt werden.

Füge diesen Code oben in die Seite ein, um die Kategorien anzuzeigen, ohne sie manuell eintragen zu müssen.


3. Verwendung in einer Vorlage

Um die Anzeige zu vereinfachen, kannst du eine Vorlage erstellen, die den Kategoriebaum automatisch einbindet:

Schritt 1: Vorlage erstellen

Erstelle eine Vorlage, z. B. Vorlage:KategorienBaumOben, mit folgendem Inhalt:

<categorytree mode="parents" hideroot="on">{{PAGENAME}}</categorytree>

Schritt 2: Vorlage in Seiten einbinden

Füge am Seitenanfang folgendes ein:

{{KategorienBaumOben}}

Dadurch werden die Kategorien jeder Seite automatisch oben angezeigt.


4. CSS für bessere Darstellung

Um die Kategorieanzeige oben übersichtlich zu gestalten, kannst du das Layout mit CSS anpassen:

In MediaWiki:Common.css kannst du z. B. folgendes hinzufügen:

.kategorien-oben {
    background-color: #f9f9f9;
    border: 1px solid #ddd;
    padding: 5px;
    margin-bottom: 10px;
    font-size: 0.9em;
}

Dann umgibst du den Kategoriebaum in der Vorlage mit einem div-Tag:

<div class="kategorien-oben">
    <categorytree mode="parents" hideroot="on">{{PAGENAME}}</categorytree>
</div>

Fazit

Die Kategoriebaum-Erweiterung ist nützlich, um die Kategorienhierarchie einer Seite übersichtlich darzustellen. Mit den oben beschriebenen Ansätzen kannst du die Kategorien sowohl oben als auch unten anzeigen lassen und dabei von der dynamischen Funktionalität profitieren. Probier die Vorlage aus, sie könnte dir einiges an Zeit ersparen!

Nikolaos:

Ich habe gerade den Kategoriebaum ausprobiert. Ich habe Seitennamen gemäß eines nicht nummerierten Inhaltsverzeichniß, so daß der Kategoriebaum die Seiten alphabetisch anzeigt. Gibt es eine Möglichkeit einer automatischen Seitennummerierung und Sortierung ohne daß man den Seitennamen vornan eine Nummer hinzufügen muß?

Sophos:


Eine automatische Nummerierung und Sortierung von Seiten im Kategoriebaum ohne manuelle Nummerierung der Seitennamen ist in MediaWiki mit etwas Anpassung möglich. Hier sind einige Ansätze, die du nutzen kannst:


1. Manuelle Sortierung mit SORTKEY

MediaWiki bietet die Möglichkeit, eine benutzerdefinierte Sortierreihenfolge in Kategorien festzulegen, ohne die Seitennamen selbst zu ändern. Dazu nutzt du den {{SORTIERUNG:}}-Schlüssel.

Beispiel:

Am Ende der Seite fügst du folgendes ein:

[[Kategorie:Beispielkategorie|01 Seitentitel]]

Alternativ kannst du mit der SORTIERUNG-Anweisung arbeiten:

{{SORTIERUNG:01 Seitentitel}}
[[Kategorie:Beispielkategorie]]

Damit wird die Seite in der Kategorie unter "01 Seitentitel" eingeordnet, ohne den angezeigten Seitennamen zu ändern.


2. Automatische Nummerierung mit einer Vorlage

Wenn du die Nummerierung automatisieren möchtest, kannst du eine Vorlage erstellen, die die SORTIERUNG automatisch generiert.

Schritt 1: Vorlage erstellen

Erstelle eine Vorlage, z. B. Vorlage:NummerierteSortierung, mit folgendem Inhalt:

{{#switch:{{PAGENAME}}
|Seite 1=01 Seite 1
|Seite 2=02 Seite 2
|Seite 3=03 Seite 3
|#default={{PAGENAME}}
}}
[[Kategorie:Beispielkategorie|{{#switch:{{PAGENAME}}
|Seite 1=01
|Seite 2=02
|Seite 3=03
|#default={{PAGENAME}}
}}]]

Schritt 2: Vorlage in die Seiten einbinden

Am Ende der Seite bindest du die Vorlage so ein:

{{NummerierteSortierung}}

Damit wird die Sortierung basierend auf den Seitennamen automatisch festgelegt.


3. Dynamische Sortierung mit DynamicPageList (DPL)

Wenn du die Erweiterung DynamicPageList (DPL) installiert hast, kannst du eine dynamische Liste erstellen, die Seiten in einer gewünschten Reihenfolge anzeigt.

Beispiel:

Füge folgenden Code in eine Seite ein, auf der du die sortierten Seiten sehen möchtest:

<DynamicPageList>
category=Beispielkategorie
order=ascending
ordermethod=lastedit
</DynamicPageList>

Mit ordermethod=lastedit kannst du beispielsweise die Reihenfolge basierend auf der letzten Bearbeitung ändern. Alternativ kannst du die Reihenfolge über ordermethod=sortkey steuern, wenn SORTIERUNG-Schlüssel gesetzt sind.


4. Sortierung per Lua-Modul (erweiterte Lösung)

Eine fortgeschrittene Möglichkeit ist die Verwendung eines Lua-Moduls, um die Sortierung automatisch zu verwalten und flexibel anzupassen.

Beispiel:

  1. Erstelle ein Modul, z. B. Module:Sortierung.
  2. Füge folgenden Code ein:
    1. local p = {}
      
      function p.sortierung(frame)
          local seiten = {
              ["Seite 1"] = "01",
              ["Seite 2"] = "02",
              ["Seite 3"] = "03"
          }
          return seiten[frame:getParent().args[1]] or frame:getParent().args[1]
      end
      
      return p
      
  3. Verwende das Modul in einer Vorlage:
    1. {{#invoke:Sortierung|sortierung|{{PAGENAME}}}}
      [[Kategorie:Beispielkategorie|{{#invoke:Sortierung|sortierung|{{PAGENAME}}}}]]
      

Fazit

Für eine einfache Lösung ohne Seitennamen zu ändern, empfiehlt sich die Verwendung von SORTIERUNG oder einer automatisierten Vorlage. Falls du mehr Flexibilität benötigst, können DPL oder Lua-Module hilfreich sein. Welche Methode möchtest du ausprobieren?

Nikolaos:

Danke soweit.

Sophos:


Gern geschehen! 😊 Wenn du noch Fragen hast oder Unterstützung bei der Umsetzung brauchst, lass es mich wissen. Viel Erfolg mit deinem MediaWiki-Projekt! 🚀

Nikolaos:

Welche CSS muß ich unter MediaWiki:Common.css für folgenden Teil eintragen, damit dieser nicht unten sondern oben angezeigt wird: <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks"

Sophos:


Um den Kategorienblock <div id="catlinks" class="catlinks"> im MediaWiki:Common.css nach oben zu verschieben, kannst du die Positionierung mit CSS anpassen. Hier ist der erforderliche CSS-Code:

CSS-Anpassung

#catlinks {
    position: fixed; /* Fixiert den Kategorienblock */
    top: 10px; /* Abstand vom oberen Rand */
    left: 10px; /* Abstand vom linken Rand */
    background-color: #f9f9f9; /* Hintergrundfarbe für bessere Sichtbarkeit */
    border: 1px solid #ddd; /* Optional: Rahmen */
    padding: 5px; /* Innenabstand für bessere Lesbarkeit */
    z-index: 1000; /* Über anderen Elementen anzeigen */
    width: auto; /* Passt die Breite an den Inhalt an */
}

Erklärung der CSS-Eigenschaften:

  • position: fixed: Der Block bleibt an einer festen Position im Fenster, unabhängig vom Scrollen.
  • top: 10px und left: 10px: Definieren die genaue Position.
  • z-index: 1000: Stellt sicher, dass der Block über anderen Seitenelementen liegt.
  • background-color und border: Gestalten das Aussehen für bessere Sichtbarkeit.

Ergebnis

Nach dem Hinzufügen dieses Codes wird der Kategorienblock oben links auf jeder Seite angezeigt, statt unten. Du kannst die Werte von top und left anpassen, um die Position weiter zu verfeinern.

Falls du zusätzliche Anpassungen benötigst (z. B. zentrierte Anzeige oder spezifische Seiten), lass es mich wissen!

Nikolaos:

Danke. So ist es nach ganz oben ans Top der Webseite verrutscht. Wie bekomme ich das oberhalb des Page Body#

Sophos:


Um den Kategorienblock oberhalb des Page Body (Inhaltsbereich der Seite, aber unterhalb von Header/Navigation) zu platzieren, musst du ihn relativ zum Hauptinhalt positionieren. Hier ist die angepasste CSS-Lösung:

Angepasster CSS-Code

#catlinks {
    position: absolute; /* Position relativ zum nächsten umschließenden Container */
    top: 0; /* Abstand vom oberen Rand des Page Body */
    left: 0; /* Abstand vom linken Rand */
    width: 100%; /* Passt die Breite an den Page Body an */
    background-color: #f9f9f9; /* Hintergrundfarbe für bessere Sichtbarkeit */
    border-bottom: 1px solid #ddd; /* Trennlinie zum Inhalt */
    padding: 5px; /* Innenabstand für Lesbarkeit */
    z-index: 10; /* Über dem Hauptinhalt, aber unter Header/Navigation */
}

Schritt-für-Schritt-Anpassung:

  1. Relativ zum #content-Container Stelle sicher, dass der Page Body-Bereich (häufig mit id="content" bezeichnet) korrekt erkannt wird. MediaWiki verwendet oft diese Struktur:
    1. <div id="content">
          <!-- Hauptinhalt der Seite -->
      </div>
      
      In diesem Fall wird der #catlinks-Block relativ zu #content positioniert.
  2. Sicherstellen der richtigen Reihenfolge Der Block sollte unterhalb der Navigation, aber oberhalb des Inhalts erscheinen. Der z-index-Wert hilft dabei, ihn vor dem Hauptinhalt sichtbar zu machen, ohne andere Elemente zu überdecken.
  3. Optionale Feinabstimmung Falls der Abstand zwischen Kategorienblock und Page Body zu gering ist, kannst du den top-Wert anpassen, z. B. top: 20px;.

Falls der Block nicht korrekt erscheint:

Füge zusätzlich diesen CSS-Code hinzu, um sicherzustellen, dass der Kategorienblock in der richtigen Hierarchie angezeigt wird:

Damit wird der Kategorienblock direkt über dem Hauptinhalt positioniert, ohne ganz nach oben zu rutschen. Probier es aus und melde dich bei Bedarf! 😊

#content {
    position: relative; /* Referenzpunkt für den absoluten Kategorienblock */
}

Nikolaos:

Un welchen Code müsse ich eingeben um zusätzlich #catlinks oben im Body der Seite anzuzeigen?

Sophos:


Um den #catlinks-Block sowohl oben im Body der Seite als auch an seiner ursprünglichen Position unten anzuzeigen, musst du den Block duplizieren. Hier ist eine Möglichkeit, dies mit JavaScript und CSS zu erreichen.

Füge in MediaWiki:Common.js (oder MediaWiki:Vector.js, je nach Skin) den folgenden Code hinzu:

document.addEventListener('DOMContentLoaded', function () {
    var catlinks = document.getElementById('catlinks');
    if (catlinks) {
        var clonedCatlinks = catlinks.cloneNode(true); // Dupliziert den gesamten #catlinks-Block
        clonedCatlinks.id = 'catlinks-top'; // Ändert die ID des duplizierten Elements
        var content = document.getElementById('content'); // Der Hauptinhalt der Seite
        if (content) {
            content.parentNode.insertBefore(clonedCatlinks, content); // Fügt den duplizierten Block oberhalb des Inhalts ein
        }
    }
});

Schritt 2: CSS-Anpassung für den oberen Kategorienblock

Füge in MediaWiki:Common.css den folgenden CSS-Code hinzu, um den oberen Kategorienblock ansprechend zu gestalten:

#catlinks-top {
    background-color: #f9f9f9; /* Optional: Hintergrundfarbe für bessere Sichtbarkeit */
    border-bottom: 1px solid #ddd; /* Trennlinie zum Inhalt */
    padding: 5px; /* Innenabstand für bessere Lesbarkeit */
    margin-bottom: 10px; /* Abstand zum Hauptinhalt */
}

Ergebnis

  • Der ursprüngliche Kategorienblock bleibt unten.
  • Ein duplizierter Kategorienblock wird oben, direkt vor dem Seiteninhalt, eingefügt.

Optional: Nur für bestimmte Seiten

Wenn du den oberen Kategorienblock nur auf bestimmten Seiten anzeigen möchtest, kannst du im JavaScript-Code eine Bedingung hinzufügen, z. B.:

if (mw.config.get('wgPageName') === 'Spezielle_Seite') {
    // Duplizierungslogik hier
}

Damit wird der obere Block nur auf der Seite Spezielle_Seite angezeigt.

Probiere diese Anpassungen aus und lass mich wissen, ob weitere Anpassungen nötig sind! 😊

Nikolaos:

Eigentlich müßte der Kategorieblock nur auf langen Seiten auch oben angezeigt werden. An sich müßte der Kategorieblock am unteren Rand des Window schwebend (floating) sein und so müßte man nicht jedesmal scrollen um zu sehen, welche Kategorien vergeben wurden – die Programmierer Programmieren, jedoch nutzen sie offenbar selbst die Software nicht zur genüge, die sie programmieren.

Sophos:


Um den Kategorieblock am unteren Rand des Fensters schwebend (floating) anzuzeigen, sodass er immer sichtbar ist – besonders auf langen Seiten – kannst du dies mit CSS und optional JavaScript umsetzen. Hier ist die Lösung:

Lösung mit CSS: Schwebender Kategorienblock

Füge folgenden Code in MediaWiki:Common.css ein, um den Kategorienblock am unteren Rand des Fensters schweben zu lassen:

#catlinks {
    position: fixed; /* Schwebend am Fenster fixiert */
    bottom: 0; /* Abstand vom unteren Rand */
    left: 0; /* Am linken Rand ausgerichtet */
    width: 100%; /* Über die gesamte Breite des Fensters */
    background-color: #f9f9f9; /* Hintergrundfarbe für bessere Sichtbarkeit */
    border-top: 1px solid #ddd; /* Trennlinie zum Seiteninhalt */
    padding: 5px; /* Innenabstand für bessere Lesbarkeit */
    z-index: 1000; /* Über anderen Seitenelementen anzeigen */
    box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); /* Optional: Schatten für bessere Abgrenzung */
}

Optional: Nur auf langen Seiten anzeigen

Wenn der Kategorieblock nur auf langen Seiten oben und unten sichtbar sein soll, kannst du dies mit JavaScriptüberprüfen und den Block entsprechend duplizieren. Füge diesen Code in MediaWiki:Common.js ein:

document.addEventListener('DOMContentLoaded', function () {
    var catlinks = document.getElementById('catlinks');
    if (catlinks && document.body.scrollHeight > window.innerHeight * 2) {
        // Seite ist mindestens doppelt so lang wie das Fenster
        var clonedCatlinks = catlinks.cloneNode(true);
        clonedCatlinks.id = 'catlinks-top';
        document.body.insertBefore(clonedCatlinks, document.body.firstChild);

        // Stil für den oberen Kategorienblock
        clonedCatlinks.style.position = 'fixed';
        clonedCatlinks.style.top = '0';
        clonedCatlinks.style.left = '0';
        clonedCatlinks.style.width = '100%';
        clonedCatlinks.style.backgroundColor = '#f9f9f9';
        clonedCatlinks.style.borderBottom = '1px solid #ddd';
        clonedCatlinks.style.padding = '5px';
        clonedCatlinks.style.zIndex = '1000';
    }
});

Was dieser Code bewirkt:

  1. Schwebender Kategorienblock unten:
    • Der Kategorienblock bleibt am unteren Fensterrand sichtbar.
  2. Automatische Anzeige oben auf langen Seiten:
    • Wenn die Seite lang genug ist (mehr als doppelte Fensterhöhe), wird ein zusätzlicher Kategorienblock oben eingefügt.

Vorteile:

  • Du musst nicht mehr nach unten scrollen, um Kategorien zu sehen.
  • Der Block ist immer zugänglich, ohne die Nutzung der Seite zu beeinträchtigen.
  • Die Lösung ist einfach und leicht anpassbar.

Probiere diese Änderungen aus, und lass mich wissen, ob sie deinen Anforderungen entsprechen oder ob du noch weitere Anpassungen benötigst! 😊

Nikolaos:

Danke. cooler Ansatz.

Sophos:


Gern geschehen, Nikolaos! 😊 Freut mich, dass dir der Ansatz gefällt. Wenn du noch weitere Anpassungen oder Optimierungen brauchst – egal ob für MediaWiki oder ein anderes Thema – stehe ich gern zur Verfügung. Viel Erfolg bei der Umsetzung und deinem Projekt! 🚀