Vorlage:If pagename

Aus Wikivoyage
Dokumentation für die Vorlage {{If pagename}}[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Funktion

Dies ist die Metavorlage {{If pagename}}. Sie hilft Vorlagen zu erkennen, auf welcher Seite sie sich befinden. Diese Vorlage benutzt für diesen Zweck Textmustererkennung. So lässt sich die Ausgabe etwas auf Unterseiten wie zum Beispiel /Archiv beschränken, oder für bestimmte Seiten unterschiedlicher Inhalt generieren. Im Wesentlichen gibt es dafür zwei Gründe:

  • Eine Vorlage wird auf unterschiedlichen Seiten eingesetzt.
  • Man möchte die Ausgabe von Inhalt außerhalb des definierten Anwendungsbereiches einer Vorlage vermeiden, sollte ein Nutzer eine Vorlage an nicht vorgesehener Stelle verwenden.

Verwendung

Die Vorlage nimmt einen oder mehrere Parameter auf. Die meisten Parameter haben keine festgelegten Bezeichnungen sondern sind eher Bestandteil der Textmustererkennung wie im folgenden Beispiel:

{{If pagename
| /doku = Das ist Dokumentationsseite
| other = Das ist eine sonstige Seite
}}

Auf der Seite Template:Example/doku würde folgendes ausgegeben werden:

Das ist Dokumentationsseite

Auf jeder anderen Seite als einer /doku Seite erscheint dann folgendes:

Das ist eine sonstige Seite

Dies ist die Beschreibung für die Textmuster, die die Vorlage interpretieren kann:

{{if pagename
<!-- kompletter Artikelname -->
| User:Example/test = Text für "User:Example/test".
| User:Example = Text für "User:Example".
| User talk:Example = Text für "User talk:Example".

<!-- kompletter Artikel inklusive aller Unterseiten -->
| User:Example/+ = findet "User:Example" and "User:Example/test".

<!-- Seitenname, namensraumunabhängig -->
| Example = findet "User:Example", "User talk:Example", "Template:Example" 
            usw. , aber nicht "User:Example/something".

<!-- alle Unterseiten, aber nicht die Hauptseite -->
| User:Example/* = findet "User:Example/something", aber nicht "User:Example".
| User talk:Example/* = findet "User talk:Example/something".

<!-- alle Unterseiten, aber nicht die Hauptseite; namensraumunabhängig -->
| Example/* = findet "User:Example/something" und "User talk:Example/something".

<!-- Unterseiten -->
| /something = findet jede Unterseite mit dem Namen "/something".
| /doc = findet jede Unterseite mit dem Namen "/doc".

<!-- Unterseiten (case-insensitive) -->
| /some* = Findet jede Unterseite, egal ob "/some" or "/Some".
| /arch* = findet zum Beispiel "User talk:Example/Archive 1".

<!-- Standardfilter -->
| basepage = rindet jede Basisseite.
| subpage = findet jede Unterseite.
| other = findet jede Seite.
}}

Hinweis: Die Mustererkennung arbeitet jedes Muster in der Reihenfolge ab, wie sie hier drüber zu sehen ist. Es gibt kein theoretisches Limit für die Anzahl der Parameter in der Vorlage. Das praktische Limit liegt bei der Performance der Server und Mediawiki-Software.

Die meisten Muster achten auf Groß- und Kleinschreibung. So findet zum Beispiel /test" die Seite "User:Example/test", aber nicht "User:Example/Test". Partielle Bezeichnungen von Unterseiten wie zum Beispiel /some* unterliegen einigen Einschränkungen (siehe auch weiter unten in dieser Dokumentation).

Wenn ein leerer (aber definierter) Parameter passt, stoppt die Textmustererkennung und die Vorlage liefert eine leere Zeichenkette zurück. Dies ist gewollt und kann folgendermaßen genutzt werden:

{{If pagename
| /Doku =
| /Sandkasten = Sandkastentext
| other = Sonstiger Text
}}

Der Code gibt nichts zurück, wenn auf einer /Doku Seite angewendet, aber auf einer Sandkastenseite erscheint das:

Sandkastentext

Ist es aber keine /Doku Seite erscheint folgendes:

Sonstiger Text

Partielle Seitenbezeichnungen

Die Vorlage erkennt auch Teile von Seitennamen:

{{If pagename
| /archiv* = Text für Archivseiten
| other = Anderer Text
}}

Auf Benutzer:Beispiel/Archiv 1 wird folgendes ausgegeben:

Text für Archivseiten

Der Parameter /some* muss klein geschrieben werden, aber er erkennt groß und klein geschriebene Unterseiten wie User:Example/SomeThing und User:Example/something. Die Teilerkennung funktioniert allerdings nur mit 4, 6 und 8 Zeichen. Somit funktionieren /some*, /someth* und /somethin, aber /som* oder /somet* zeigen keine Wirkung.

Längere Teilzeichenketten greifen zuerst zu. Wenn /somethin und /some* auf der Seite User:Example/Something definiert sind, wird/somethin zuerst benutzt.

Der Parameter „page“

Für Test- und Demonstrationszwecke gibt es den Parameter page. Auf folgende Weise wird er angewandt:

{{If pagename
| /test = Text für Test-Seiten
| other = Text für andere Seiten
| page = Template:Example/test
}}

Egal, wo die Vorlage eingebunden ist. Es wird immer folgendes zurückgegeben:

Text für Test-Seiten

Der Parameter page lässt die Vorlage arbeiten als würde sie sich exakt auf dieser Seite befinden. Eine solche Seite muss auch nicht in Wirklichkeit existieren. Wird der Parameter benutzt und leer gelassen, wird die aktuelle Seite zugrunde gelegt.

Möchtest du, dass deine Vorlage den page Parameter auch versteht und sich ähnlich wie diese Metavorlage verhält, kannst du diese Vorlage folgendermaßen einbinden:

{{If pagename
| /test = Text für Test-Seiten
| other = Text für andere Seiten
| page = {{{page|}}}
}}

Erkennung von Namensräumen

Die Vorlage besitzt keine Namensraumerkennung. Dazu musst du sie mit den nötigen weiteren Metavorlagen wie z. B. {{Template other}} verbinden. Beispiel:

{{Template other
| {{If pagename
  | /Doku = Text für Dokuseiten.
  }}
| <!-- Anderer Ort - nichts tun -->
}}

Auf der Seite „Benutzer:Beispiel/Doku“ soll nichts passieren, aber auf „Vorlage:Beispiel/Doku“. So geht's:

Technische Informationen

Die Vorlage arbeiten auf allen Namensräumen gleich, selbst wenn das MediaWiki-Feature subpage feature deaktiviert ist.


Weitere Vorlagen für den Umgang mit Namensräumen

Die folgenden Vorlagen beschränken die Ausgabe auf einen Namensraum und bieten für alle anderen Namensräume eine Alternative. Verschachtelungen sind möglich.

  • {{Main other|Auszugebender Text}} – Für Ausgaben im Artikelnamensraum
  • {{Talk other|Auszugebender Text}} – Für Ausgaben auf Diskussionsseiten
  • {{User other|Auszugebender Text}} – Für Ausgaben auf Benutzerseiten
  • {{Wikivoyage other|Auszugebender Text}} – Für Ausgaben im Projektnamensraum
  • {{Template other|Auszugebender Text}} – Für Ausgaben auf Vorlagenseiten
  • {{Help other|Auszugebender Text}} – Für Ausgaben auf Hilfeseiten
  • {{File other|Auszugebender Text}} – Für Ausgaben im Dateinamensraum
  • {{Category other|Auszugebender Text}} – Für Ausgaben auf Kategorieseiten
  • {{Portal other|Auszugebender Text}} – Für Ausgaben im Portalnamensraum
  • {{Module other|Auszugebender Text}} – Für Ausgaben auf Modulseiten
  • {{Single namespace|Namensraum|Auszugebender Text}} – Allgemeine Form für die obigen Vorlagen, der die Bezeichnung des Namensraums als Parameter mit übergeben wird

Weitere Werkzeuge zur Erkennung und Behandlung von Namensräumen

  • {{Namespace detect|Namensraum|Auszugebender Text|Alternativer Text}} – Die vielseitigere Version der obigen Vorlagen
  • {{NAMESPACEID|<optionaler Namensraum>}} – Die Vorlage fungiert als magisches Wort und liefert die Nummer des Namensraums des Artikels oder man übergibt eine Namensraumbezeichnung
  • {{Incorrect namespace|Namensraum}} – Erzeugt eine Ausgabe und Fehlerkategorisierung, wenn eine Vorlage im falschen Namensraum benutzt wird
  • {{Category handler|Namensraum = Kategorie|...}} – Erlaubt eine namensraumabhängige Kategorisierung.

Behandlung und Erkennung von Artikelbezeichnungen:

Weitere technische Informationen:

Hinweise