Hilfe:Vorlagenprogrammierung

Aus Stupidedia, der sinnfreien Enzyklopädie!
Version vom 12:03, 23. Mai 2016 von Obsidian (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Vorlagen werden für viele Dinge benötigt, seien es Staffelvorlagen, Gewinne von Contests, oder auch eigene für private Zwecke wie eigene Rechtecke oder Hilfen für Artikel. Für diese Vorlagen kann man einige Hilfsmittel wie Kontrollstrukturen verwenden, die verschiedene Gegebenheiten anders behandeln.

Gehen wir davon aus, wir wollen auf unserer Benutzerseite eine Vorlage, die ein Rechteck in unterscheidlichen Farben darstellen kann, einfach mal mit dem Namen Farbig.

Erstellung der Vorlage

Eine Vorlage wird erstellt, wie jede andere Seite auch, mit dem Unterschied, dass sie den Präfix Vorlage: besitzt. Für eigene Vorlagen auf Unterseiten (In unserem Fall Benutzer:172.71.222.163/Farbig) wird es nicht benötigt.

onlyinclude/includeonly/noinclude

Damit der Quelltext im Artikel selber nicht angezeigt wird, sondern nur die Vorlage an sich und damit der Erklärungstext beim Einbinden nicht auch mit eingebunden wird, gibt es die drei Tag's includeonly, onlyinclude und noinclude (<onlyinclude></onlyinclude> + <includeonly></includeonly><onlyinclude></onlyinclude> + <noinclude></noinclude>), diese funktionieren wie folgt:

includeonly onlyinclude noinclude
Code <includeonly>{{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}
</includeonly>
Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:{{CURRENTUSER}}/Farbig}}</nowiki></code>
<onlyinclude>{{{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}
</onlyinclude>
Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:172.71.222.163/Farbig}}</nowiki></code>
{{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}

<noinclude>Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:{{CURRENTUSER}}/Farbig}}</nowiki></code>

</noinclude>
Code auf der Vorlagen-Seite Die Verwendung meines Rechtecks ist so: :{{Benutzer:172.71.222.163/Farbig}} {{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}

Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:172.71.222.163/Farbig}}</nowiki></code>
{{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}

Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:{{CURRENTUSER}}/Farbig}}</nowiki></code>
Code, der eingebunden wird {{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}

Die Verwendung meines Rechtecks ist so:
<code><nowiki>{{Benutzer:172.71.222.163/Farbig}}</nowiki></code>
{{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}} {{#if: {{{1|}}}|Gesetzt|Nicht gesetzt}}

includeonly

Alles was sich innerhalb des includeonly befindet, wird nur dann geladen, wenn die Vorlage eingebunden wird wird, das bedeutet, dass es auf der Vorlagenseite (z.B. {{Benutzer:172.71.222.163/Farbig}}) an sich nicht angezeigt wird. Das ist sehr nützlich, wenn man seinen Quelltext nicht auf der Seite haben will.

onlyinclude

Ist ähnlich wie includeonly, alles was zwischen <onlyinclude> und </onlyinclude> steht, wird auf der normalen Seite angezeigt, allerdings wird nur das innerhalb des Tags beim Einbinden der Vorlage eingefügt. Alles was ausserhalb steht, wird deshalb ausgelassen.

Im Gegensatz zu includeonly wird der Quelltext aber auf der Seite an sich noch angezeigt, weshalb die beiden Vorlagen fast immer in Kombination stehen.


Generell gilt also: Am besten benutzt man einfach beide auf's mal, dann muss man sich nicht darum kümmern, welche Vorlage jetzt was macht. Denn in Kombination, sorgen die beiden Tags, dass nur der Logik-Teil der Vorlage eingefügt wird, auf der Vorlage an sich aber ausgeblendet wird, was Platz für erklärenden Text und Beispiele schafft.

noinclude

Was von <noinclude> und </noinclude> eingeschlossen wird, wird nur auf der Vorlage gezeigt, aber NICHT geladen, falls die Vorlage eingebunden wird. Das ist somit das genaue Gegenteil von includeonly.

Parameter

Einer Vorlage können bei der Einbundung Werte mitgegeben werden, entweder mit name=, oder einfach so, getrennt durch '|'. Diese können dann individuell in der Vorlage angezeigt und behandelt werden (mehr dazu im Kapitel Validierung):

{{Benutzer:172.71.222.163/Farbig|var1=rot|var2=blau}} oder einfach
{{Benutzer:172.71.222.163/Farbig|rot|blau}}

In der Vorlage kann man mit dem Namen, umschlossen von 3 geschweiften Klammern, diese anzeigen lassen. Sollte man keinen Namen angegeben haben, reicht einfach die Nummer, an welcher Stelle er steht:

Hallo, meine Parameter sind {{{var1}}} bzw. {{{var2}}} bzw.
Hallo, meine Parameter sind {{{1}}} und {{{2}}}

Was dann auf der Seite so aussähe:
Hallo, meine Parameter sind rot und blau.

Wenn man innerhalb der Klammern noch ein '|' hinzufügt, kann ausserdem ein Standart-Wert definiert werden. Sollte also vergessen werden, den Parameter mitzugeben, schriebt er statt gar nichts, einfach das hinein, was man dahinter hinschreibt:{{{1|Wert}}}. Das sähe dann so aus:

Hallo, meine Parameter sind {{{var1|grün}}} und {{{var2|gelb}}} bzw.
Hallo, meine Parameter sind {{{1|grün}}} und {{{2|gelb}}}

Vergisst man dann ausversehen das |var1=, sähe das so aus:
Hallo, meine Parameter sind grün und gelb.

Setzt man nur den ersten: ({{Benutzer:172.71.222.163/Farbig|rot}}):
Hallo, meine Parameter sind rot und gelb.

vardefine

Alternativ kann man auch Variabeln mit eigenen Werten definieren, entweder um sie je nach Fall in einer Kontrollstruktur anders zu befüllen (mehr dazu im Kapitel Validierung), oder einfach um viel benutzen Code auszulagern. Diese werden wie folgt definiert:

{{#vardefine:var1|Variabeln-Wert}}

Die Einbindung geschieht allerdings nicht per {{{var1}}}, sondern wie folgt:

{{#var:var1}}

Validierung

Statt einfach nur die Werte stumpf auf die Seite auszugeben, kann man diese auch überprüfen und dementsprechend je nach Wert anders reagieren, dafür gibt es die Funktionen If und Switch.

If

Die If-Struktur überprüft, ob der eingegebene Wert leer ist, wie man in oberen Beispielen schon gesehen hat. Das ist auch schon die einzige Funktion, die das if hat, hier nochmals die Verwendung:

{{#if: {{{1|}}} |Gefüllt|Leer}}

Wurde der erste Parameter befüllt ({{Benutzer:172.71.222.163/Farbig|rot}}), wird Gefüllt an dieser Stelle eingefügt, sonst ({{Benutzer:172.71.222.163/Farbig}}) Leer. Statt nur den Text auszugeben, kann natürlich wiederum weiterer Code, oder nochmals weitere If's verwendet werden, z.B. ein #vardefine um eine Variable jenachdem anders zu befüllen.

Ifexpr

Um nicht nur zu überprüfen, ob ein Parameter gesetzt ist, sonder deren Wert zu überprüfen gibt es #ifexpr, mit diesem kann man einen "mathematischen Ausdruck" überprüfen lassen (Also ein einfacher Vergleich zweier Zahlen):

{{#ifexpr: {{{1}}} > 3 |Zahl grösser als 3.|Zahl kleiner oder gleich 3}}

Andere Beispiele wären:

Zeichen Bedeutung
{{{1}}} > 5 Größer
{{{1}}} < 5 Kleiner
{{{1}}} = 5 Gleich
{{{1}}} >= 5 Größer oder gleich
{{{1}}} <= 5 Kleiner oder gleich

Ifeq

Ifeq (if Equals, "Wenn gleich") vergleicht 2 Texte miteinander, wenn es sich um den selben Text handelt, kann man so etwas anderes zeigen als wenn es sich unterscheidet:

{{#ifeq: {{{1}}}|rot|Es wurde rot mitgegeben|es wurde nicht rot mitgegeben}}

Switch

Unter einem Switch kann man sich eigentlich ein #ifeq mit beliebig vielen Möglichkeiten vorstellen, woebei für jede möglichkeit ein anderes Ergebnis ausgegeben werden kann:

{{#switch: {{{1}}}
| rot = rot wie das Blut
| blau = blau wie das Meer
| grün = grün wie ein Smaragd
...
| #default = keine spezielle Farbe
}}

Jenachdem was jetzt in diesem ersten parameter stand, wird ein anderer Code ausgeführt, nämlich den vom '=' bis zum nächsten '|'.

Gibt man nun "rot" ein, erscheint an der Stelle rot wie das Blut, bei blau blau wie das Meer und sollte man was ganz anderes (oder gar nichts) wählen, erscheint keine Spezielle Farbe.

Beispiel

<onlyinclude><includeonly>
{{#switch: {{{1}}}
| Rechteck =
{{#vardefine:Name|farbiges Rechteck}}
| Kreis =
{{#vardefine:Name|farbiger Kreis}}
{{#vardefine:Style|border-radius: 100px 100px 100px 100px}}
}}
<span style="color: {{{2|white}}}; background-color: {{{3|black}}}; {{#var:Name}}">Hallo, dies ist mein {{#var:Name}}</span>
</includeonly></onlyinclude>

== Verwendung ==
=== Rechteck ===
'''Code:'''<br />
<code><nowiki>{{Benutzer:172.71.222.163/Farbig|Rechteck|blue|red}}</nowiki></code><br />
'''Benutzung:'''<br />
{{Benutzer:172.71.222.163/Farbig|Rechteck|blue|red}}

=== Kreis ===
'''Code:'''<br />
<code><nowiki>{{Benutzer:172.71.222.163/Farbig|Kreis|blue|red}}</nowiki></code><br />
'''Benutzung:'''<br />
{{Benutzer:172.71.222.163/Farbig|Kreis|blue|red}}


  1. onlyinclude und includeonly markieren den Anfang der Vorlage
  2. Zuerst wird auf die erste Variable gezielt und mit einem Switch je nach Situation die Variable Name und Style selbst beschrieben.
  3. Dann beginnt die Vorlage an sich, als Parameter kann man die Farbe und die Hintergrundfarbe mitgeben, sind diese nicht gesetzt, benutzt er automatisch die Standartfarben schwarz und weiß.
  4. Danach wird die eben definierte Variable Name eingefügt, je nachdem was man als ersten Parameter mitgegeben hat, steht hier also was anderes (klar, man könnte das switch auch hier verwenden, aber vardefine macht auch vorallem dann sinn, wenn man die Variable an mehreren Stellen benutzt)
  5. onlyinclude und includeonly sind durch, die Erklärung beginnt, per code und nowiki wird erst die Einbindung demonstriert und dann die Vorlage tatsächlich eingefügt

Linktipps: Faditiva und 3DPresso