Hilfe:ParserFunctions in Vorlagen

Aus C64-Wiki
Zur Navigation springenZur Suche springen

In Vorlagen kann den Parametern mittels Einfügung eines senkrechten Striches | ein Standardwert zugeteilt werden, der immer erscheint, wenn der Parameter bei der Einbindung der Vorlage nicht definiert wird. Beispielsweise kann man schreiben: {{{1|Du hast den Parameter vergessen!}}}. Dem Vorlagennutzer wird dann bei der Vorschau oder nach dem Speichern klar, dass er den Parameter noch definieren muss.

Nun kann dieser Standardwert aber auch weggelassen werden: {{{1|}}}. In diesem Fall können ParserFunctions eingesetzt werden, um festzustellen, ob bei der Einbindung einer Vorlage ein Parameter weggelassen wird oder nicht. Dann kann man in vielfältiger Weise darauf reagieren, nicht nur mit einem Warnhinweis.

Betrachten wir folgende Gegenüberstellung:

  • {{{1}}}
Beispiel A
{{#if: {{{1}}} | Parameter 1 ist nicht definiert, oder er ist definiert und nicht leer. | Parameter 1 ist als leer definiert, enthält höchstens Leerzeichen oder Zeilenumbrüche. }}
Ergebnis
Parameter 1 ist nicht definiert, oder er ist definiert und nicht leer.
  • {{{1|}}}
Beispiel B
{{#if: {{{1|}}} | Parameter 1 ist definiert und nicht leer. | Parameter 1 ist nicht definiert, oder definiert, aber leer. }}
Ergebnis
Parameter 1 ist nicht definiert, oder definiert, aber leer.
Vergleich
Anwendung in einer Vorlage Zustand des Parameters Beispiel A:
{{#if: {{{1}}} |
{{#if: {{{para}}} |
Beispiel B:
{{#if: {{{1|}}} |
{{#if: {{{para|}}} |

{{Vorlage}}
{{Vorlage}}
nicht definiert:
Parameter nicht verwendet
WAHR FALSCH

{{Vorlage|}} .. {{Vorlage|1=}}
{{Vorlage|para=}}
definiert, aber leer FALSCH FALSCH

{{Vorlage|Wert}} .. {{Vorlage|1=Wert}}
{{Vorlage|para=Wert}}
definiert
und nicht leer
WAHR WAHR

Die zweite Art ({{{1|}}}, Beispiel B) mit leerem default-Wert, wird oft dann verwendet, wenn zwar ein Parameter exisitiert, er aber leer ist.

Ein Beispiel für einen Test, ob ein Parameter in einer Vorlage festgelegt wird: {{#ifeq:{{{v|}}}|{{{v|-}}}| v ist festgelegt (kann auch leer sein) | v ist nicht festgelegt }}

In seltenen Fällen kann es sein, dass sich eine Vorlage mit einem nicht festgelegten Parameter anders verhält wie wenn sie festgelegt aber leer ist. Wenn die Vorlage von einer Wrappervorlage verwendet wird, gibt es einen Weg um sicher zugehen, dass nichtdefinierte Parameter auch so bleiben (auch mit nummerierten Parametern):

<!-- wrapper template code -->
{{wrapped_template|
normal_parameter={{{normal_parameter|}}}|
sensitive_parameter{{#ifeq:{{{sensitive_parameter|}}}|{{{sensitive_parameter|-}}}||x}}={{{sensitive_parameter|}}}|
...
}}

Das wrapped_template empfängt einen definierten aber leeren normal_parameter in genau zwei Fällen:

  • Wenn der normal_parameter definiert und leer
  • Wenn der normal_parameter nichtdefiniert ist (da der Wert durch das wrapper template definiert wird.

Im Vergleich, das wrapped_template empfängt einen definierten sensitive_parameter, jedoch nur wenn er definiert ist, da #ifeq den Wert des wrapped_template Parameternamens zu « sensitive_parameterx » setzt, auch wenn sensitive_parameter nichtdefiniert ist.


Note also that wrapped_template receives a specified and empty sensitive_parameter only when the wrapper template receives a specified and empty sensitive_parameter. Of course, one must make sure the suffixed wrapped_template parameter name is meaningless to the wrapped_template for this to work properly.

Siehe auch