Vorlage:Familien-in-Kategorie

Aus KoschWiki
Version vom 14. Februar 2020, 08:12 Uhr von VolkoV (D | B) (Textersetzung - „|?#“ durch „|?#-“)
Zur Navigation springen Zur Suche springen


Was macht diese Vorlage?

Mit dieser Vorlage lassen sich Listen von Familien in Tabellenform generieren.

Die Vorlage

  • durchsucht die Kategorie:Familien
  • filtert dabei auf die Kategorie:AutoCat ( = Hinweis darauf, dass die Vorlage:Familie verwendet wird, was notwendig für die Abfrage ist) sowie eine weitere Kategorie
  • listet in einer Tabelle Name, Kurzbeschreibung, Wappen und Lehen auf, wobei nach dem Kurznamen der Familie sortiert wird.

Wie verwendet man diese Vorlage?

Die Vorlage verwendet Parameter, welche mit Standardwerten versehen werden, falls man nichts weiter angibt.

Im einfachsten Fall reicht es also aus, folgenden Code in eine Seite einzufügen:

{{Familien-in-Kategorie}}

Ein Beispiel für den umgekehrten Extremfall, dass alle Parameter angegeben werden:

{{Familien-in-Kategorie|Kategorie=Handel und Handwerk|Untergegangen=Egal|Maximale Anzahl=10}}

  • Man kann jeden Parameter unabhängig von den anderen verwenden, also auch nur einen oder zwei angeben und den Rest weglassen.
  • Es spielt keine Rolle, in welcher Reihenfolge man die Parameter angibt.

Parameter:

  • Kategorie - Standardwert ist der Name der Seite, auf der die Vorlage eingebunden wird. Muss in jedem Fall der Name einer existierenden Kategorie sein. Ein logisches "ODER" ist möglich, indem man die einzelnen Kategorien durch {{!!}} voneinander trennt. Beispiel: Kategorie=Außerkosch{{!!}}Böse filtert auf alle Familien, die im Außerkosch oder böse sind.
  • Untergegangen Optionen: Nein/Ja/Egal - Standardwert ist "Nein". Damit wird auf existierende / untergegangene Familien gefiltert - oder gar nicht. Die Idee dahinter: Fürs aktuelle Briefspiel sind existierende Häuser relevanter. Falls ein Filter zum Einsatz kommt, wird darauf unterhalb der Tabelle hingewiesen. ( Es werden nur lebende Familien angezeigt. / Hinweis: Es werden nur ausgestorbene Familien angezeigt.)
  • Maximale Anzahl - Standardwert beträgt 12. Gibt es mehr als diese maximale Anzahl von Familien, erscheint in der letzten Zeile der Tabelle unten rechts ein Link auf (… weitere Familien). Die Idee dahinter: In vielen Fällen reicht ein Dutzend Einträge aus. Liegt die Anzahl der gefundenen Familien knapp darüber, ist es praktisch, die Grenze anpassen zu können. Ohne eine automatische Grenze wäre es gefährlich, die Vorlage auszuprobieren, weil das Ergebnis dann aus Hunderten von Familien bestehen könnte, was die Seite sehr lang machen und deren Ladezeit ernorm in die Höhe treiben würde.

Einsatzzweck

Wann immer es darum geht, alle Familien aus einer bestimmten Kategorie zu bekommen! Einige Ideen:

  • Die Lehen haben eigene Kategorien. Man kann also für eine Grafschaft, Baronie oder sonstiges Lehen eine Übersicht der dortigen Familien erstellen.
  • Durch die "ODER"-Option kann ein Briefspieler auf einen Schlag abfragen, welche Familien es in allen Lehen gibt, in denen er Figuren hat.
  • Es gibt eine eigene Kategorie:Spielerfamilien, mit der eine entsprechende Briefspielübersicht schnell gemacht ist.
  • Es gibt mehrere Familien-Unterkategorien (Adelshäuser/Bürgerfamilien/Zwergensippen), die man spezifisch abfragen kann. Adel ist noch einmal unterteilt in Hoch- und Niederadel.
  • Es gibt eine eigene Kategorie:Untergegangene Familien, wobei es hier offensichtlich keinen Sinn hätte, den Parameter "Untergegangen" auf "Nein" zu setzen.

Technische Dokumentation

Absolut unwichtig für normale Benutzer, nur relevant für Vorlagen-Programmierer. Daher folgt reichlich technisches Vokabular!

Zunächst wird eine Variable namens Lebend-Bedingung über eine switch-Anweisung definiert. Hierbei wird der Wert des Parameters Untergegangen ausgewertet - oder Nein verwendet, falls dieser nicht gesetzt wurde.

Die Fallunterscheidung läuft wie folgt ab:

  • Nein - verwende [[Lebend::Ja]] als Wert
  • Ja - verwende [[Lebend::Nein]] als Wert
  • Egal - verwende nichts als Wert
  • in jedem anderen Fall - verwende [[Lebend::Ja]] als Wert (damit wird abgefangen, dass Leute irgendetwas anderes als die sinnvollen Optionen angeben)

Im Anschluss daran wird eine Variable namens Lebend-Hinweis über eine switch-Anweisung definiert. Dabei wird der Wert der soeben definierten Variable Lebend-Bedingung ausgewertet. Diese ist in jedem Fall sinnvoll befüllt.

Die Fallunterscheidung läuft wie folgt ab:

  • nichts (Variable ist leer) - verwende nichts als Wert (ohne Filter soll auch kein Hinweis erscheinen)
  • [[Lebend::Ja]] - verwende Hinweis: Es werden nur lebende Familien angezeigt. als Wert
  • [[Lebend::Nein]] - verwende Hinweis: Es werden nur ausgestorbene Familien angezeigt. als Wert
  • in jedem anderen Fall - verwende nichts als Wert (darf streng genommen nicht eintreten durch vorherige Setzung, aber die Variable ist so sauberer modelliert)

Der Hauptteil der Vorlage besteht aus einer Tabelle, die eine Abfrage enthält. Für die Formatierung wird die CSS-Klasse tabellehuebsch verwendet und die Breite auf 100% gesetzt. Die Titelzeile der Tabelle wird mit "Name", "Kurzbeschreibung", "Wappen und "Lehen" beschriftet.

Die Zeilen mit den eigentlichen Tabelleninhalten werden über die Abfrage erstellt.

Die Abfrage filtert auf die Kategorie:Familien, Kategorie:AutoCat - sowie entweder die Kategorie, die so heißt wie der Wert des Parameters Kategorie oder wie der volle Seitenname, falls der Parameter nicht gesetzt wurde. Außerdem wird der Inhalt der Variable Lebend-Bedingung als möglicher weiterer Filter verwendet.

Mit der Angabe "mainlabel=-" wird die implizite, automatische Ausgabe des Seitentitels standardmäßig unterdrückt. Abgefragt werden:

  • Seitentitel (also explizit; aber nur den Namen ohne Link, da mit "#" abgefragt wird)
  • Kurzbeschreibung
  • Wappen ist# (das gibt den Namen der Wappendatei zurück - im Unterschied zu "Wappen ist", das das Wappen selbst zurückgibt)
  • Lehen

Als Format wird ein Template gewählt. Als Template wird dabei die Vorlage:Familien-in-Kategorie-Zeile aufgerufen. Die Zeilenvorlage muss nicht so ähnlich wie die Hauptvorlage heißen; es ist nur sehr sinnvoll, um bei Hunderten von Vorlagen die Übersicht zu behalten. (Zur Funktion dieser Zeilen-Vorlage siehe dort.)

Die Sortierung erfolgt nach dem Attribut "Kurzname" und zwar ausdrücklich aufsteigend.

Als Begrenzung für die Abfrage wird der Wert des Parameters Maximale Anzahl verwendet oder 12, falls der Parameter nicht gesetzt wurde.

Unterhalb der Tabelle wird noch den Inhalt der Variable Lebend-Hinweis ausgegeben, also der Hinweis, ob in obiger Tabelle nur lebende/ausgestorbene Familien erfasst werden.

Diese Dokumentation ist unter Vorlage:Familien-in-Kategorie/Doku hinterlegt.