Vorlage:Phönix/Doku: Unterschied zwischen den Versionen

Aus KoschWiki
Zur Navigation springen Zur Suche springen
Kunar (D | B)
KKeine Bearbeitungszusammenfassung
Kunar (D | B)
KKeine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 3: Zeile 3:
</noinclude>
</noinclude>
==Was macht diese Vorlage?==
==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?==
==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:
 
<nowiki>{{</nowiki>{{PAGENAME}}<nowiki>}}</nowiki>
 
Ein Beispiel für den umgekehrten Extremfall, dass alle Parameter angegeben werden:
<nowiki>{{</nowiki>{{PAGENAME}}|Kategorie=Handel und Handwerk|Untergegangen=Egal|Maximale Anzahl=10<nowiki>}}</nowiki>
 
* 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 <nowiki>{{!!}}</nowiki> voneinander trennt. Beispiel: ''Kategorie=Außerkosch<nowiki>{{!!}}</nowiki>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==
==Technische Dokumentation==
'''Absolut unwichtig''' für normale Benutzer, nur relevant für Vorlagen-Programmierer. Daher folgt reichlich technisches Vokabular!
'''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.
....[[Kategorie:Benutzervorlage]]<includeonly>
 
Die Fallunterscheidung läuft wie folgt ab:
* ''Nein'' - verwende ''<nowiki>[[Lebend::Ja]]</nowiki>'' als Wert
* ''Ja'' - verwende ''<nowiki>[[Lebend::Nein]]</nowiki>'' als Wert
* ''Egal'' - verwende nichts als Wert
* in jedem anderen Fall - verwende ''<nowiki>[[Lebend::Ja]]</nowiki>'' 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)
* ''<nowiki>[[Lebend::Ja]]</nowiki>'' - verwende ''Hinweis: Es werden nur lebende Familien angezeigt.'' als Wert
* ''<nowiki>[[Lebend::Nein]]</nowiki>'' - 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 [[MediaWiki:Common.css|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:Phönix-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:Phönix/Doku]] hinterlegt.''<noinclude>[[Kategorie:Benutzervorlage|Phönix-Doku]]</noinclude>
''Diese Dokumentation ist unter [[Vorlage:Phönix/Doku]] hinterlegt.''</includeonly>

Aktuelle Version vom 11. März 2022, 19:45 Uhr

Die ist die Dokumentation für die Vorlage:Phönix. Sie wird dort ebenfalls angezeigt, weil die Dokumentation wie eine eigene Vorlage funktioniert und daher einfach eingebunden werden kann.

Was macht diese Vorlage?

....

Wie verwendet man diese Vorlage?

....

Technische Dokumentation

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

....