Diese Hilfeseite gibt technische Hinweise, wie eine neue Vorlage und vergleichbar erstellt oder eine bestehende verbessert werden kann.

Vorausgesetzt ist, dass ihr Zweck sinnvoll und sie verständlich benannt worden ist.

Zur Anwendung (Einbindung) in die darstellende Seite siehe Hilfe:Vorlagen.

Seitenstruktur[Bearbeiten | Quelltext bearbeiten]

Quelltext

Eine einfache Vorlagenseite hat die folgende Syntax:

<onlyinclude>Wirksame Programmierung</onlyinclude>

[[Kategorie:Vorlage:.........]]

Unterseiten

Die Stammseite kann Unterseiten haben. Dabei ist zu unterscheiden zwischen

Zu den letzteren gehören die standardisierten Unterseiten-Namen

Sie sind mit entsprechenden Untervorlagen der Vorlage:Dokumentation zu kennzeichnen.

Untervorlagen

Eine Untervorlage ist dazu vorgesehen, inhaltlich wirksam in andere Seiten eingebunden zu werden. Dabei gibt es zwei Fälle:

Ein Beispiel für letzteres wäre Vorlage:NavFrame und dazu Vorlage:NavFrame/Ende.

Ein anderes wäre eine Gruppe von drei zusammengehörenden Vorlagen zur Generierung und konsistenten Formatierung einer Tabelle:

Es ist damit offensichtlich, dass diese drei Vorlagen unmittelbar zusammengehören.

Namensraum

Jede inhaltliche Seite kann technisch in andere eingebunden werden. Es ist nicht erforderlich, dass ihr Name mit Vorlage: beginnt.

Es gibt drei Gründe, warum einbindbare Seiten im Vorlagen-Namensraum angelegt werden:

Soll hingegen eine Einbindung nur innerhalb eines bestimmten Portals, einer Redaktion oder eines Wikiprojekts genutzt werden, dann soll diese Seite dort als Unterseite angelegt und gepflegt werden, hat hingegen nichts im allgemeinen Vorlagen-Namensraum der Community zu suchen.

Insbesondere Einbindungen ausschließlich für den Benutzernamensraum sollen auch nur von dort bedient werden. Es gibt den virtuellen „Benutzer:Vorlage“, der derartige Angebote verwaltet.

Ein anderer typischer Fall sind bei Projektseiten die Unterseiten /Intro – sie werden immer nur von ihrer Oberseite eingebunden und ermöglichen es, die sich selten ändernde Einführung aus der Archivierung und den Seitenversionen herauszuhalten, sie ggf. auch gesondert zu schützen und Veränderungen an der Einleitung mit einer unabhängigen Versionsgeschichte auszustatten.

Alle Ausführungen zur Programmierung einer Vorlage, etwa zu Parametern, gelten für alle anderen inhaltlichen Seiten anderer Namensräume sinngemäß genauso.

Weiterleitung

Bei Einbindung der Weiterleitung einer Vorlage auf eine aktuelle Programmierung werden alle Parameter genauso zugewiesen als ob die wirksame Vorlage eingebunden wäre.

Die Programmierung hat keinerlei Möglichkeit herauszufinden, ob sie direkt oder über eine Weiterleitung eingebunden wurde.

Parameter[Bearbeiten | Quelltext bearbeiten]

Eine wohlüberlegte Abbildung des zu lösenden Problems auf verständlich benannte Parameter und deren intuitive Werte ist für eine gute Vorlage von entscheidender Bedeutung.

Namen von Parametern

Als Namen von Parametern kommen theoretisch alle Zeichen in Frage, mit folgenden Ausnahmen:

Unbeschadet der theoretischen Möglichkeiten soll der Name selbsterklärend sein, zumindest den Sinn nahelegen und Verwechslungen mit anderen Parametern vermeiden.

Syntax

Der bei der Einbindung zugewiesene Wert ist innerhalb der Programmierung durch Einschluss des Namens in dreifache geschweifte Klammern (({))} verfügbar.

Beispiele:

Das letztgenannte Verhalten ist nicht intuitiv und soll nicht für die Nutzung nach außen verwendet werden. Vorgabewerte sind anders sicherzustellen. Wird eine Vorlageneinbindung mittels VisualEditor bearbeitet, dann gibt es keine Kontrolle über den entstehenden Quelltext und die Fälle können auch nicht unterschieden oder auch nur verstanden werden.

Bei der Vorlagenerstellung ist darauf zu achten, dass Konstrukte vermieden werden, die bei leeren Parameterwerten zu Darstellungsfehlern führen können. Dies betrifft insbesondere die Kursiv- und Fettschrift der Parameterinhalte.

ungeeignete Syntax
''(({Parameter|))}'' oder '''(({Parameter|))}'''
bei leeren Parametern wird die Wikisyntax zu '''' oder ''''''
dies erzeugt dann unerwünschte Fett- und Fettkursivschrift im nachfolgenden Text.

Probleme können auch auftreten, wenn Inlinetags um Parameter gelegt werden, in deren Inhalten Aufzählungen, Textblöcke oder Zeilenumbrüche vorkommen können.

ungeeignete Syntax
<small>(({Parameter|))}</small> oder <span style="…">(({Parameter|))}</span>
hier sollte stattdessen div verwendet werden.

Benannt oder unbenannt?

Ziel ist es, den Quelltext lesen zu können, und ohne Rückgriff auf die Vorlagendokumentation eine ungefähre Vorstellung davon zu bekommen, welche Wirkung die Vorlage dieses Namens haben wird und was die einzelnen Parameterwerte bedeuten. Auch ohne jahrelang in einem Spezialgebiet tätig zu sein.

Benannte Parameterwerte vermindern auch den Aufwand zur Trimmung.

Gleichheitszeichen in Parameterwerten machen für die Verwendung Probleme, stören aber bei benannte Parametern nicht, was ein weiterer Grund ist, sie zu benennen.

Falls gleichzeitig unbenannte und benannte Parameter möglich sind, dann sollen zuerst alle unbenannten in Einbindung und Dokumentation auftreten, erst danach die benannten.

„Unbenannt“ wäre für Pflichtparameter geeignet, bei denen die Bedeutung klar ist und die eine innere Logik für ihre Reihenfolge mitbringen. Bei unterschiedlicher Bedeutung (anders als in Vorlage:max) darf nur der allerletzte unbenannte Parameter optional sein, wenn überhaupt. Eine Situation, nach der die stellungsgebundenen optionalen Parameter durch leere || übersprungen werden sollen, um weiter hinten doch noch eine Wertzuweisung zu erreichen, ist eine sehr fehleranfällige und deshalb zu eliminierende Kinderkrankheit aus der Anfängerzeit.

Unbenannte Parameter sind nur scheinbar „einfacher“ als benannte, ziehen tatsächlich aber vielfältige Folgeprobleme sowohl bei der Verwendung wie auch in der Programmierung wie auch in der langfristigen Pflege nach sich.

Unbenannte Parameter

In der Frühzeit der Wikipedia waren in den allerersten Vorlagen unbenannte Parameter sehr beliebt. Damals gab es noch keine Einzeldokumentationen zu Vorlagen, damit auch keine Kopiervorlagen, über die sich mit wenigen Mausklicks ein Schema für die Quelltext-Einbindung zum Ausfüllen einfügen ließ; geschweige denn Werkzeuge, die Formulare für die Dateneingabe anboten. Man versuchte, mit möglichst wenig Tastenbetätigungen für den Namen der Vorlage und die Parameterzuweisungen ein Ergebnis zu erzielen. Es gab auch nur wenige Dutzend Vorlagen mit wenigen Parametern, deren Bedeutung auswendig gelernt wurde. Heute, mit 100.000 einbindbaren Vorlagen und vielfältigen Parametern ist das ein Alptraum, und das Vorgehen ist nicht intuitiv und deshalb sehr fehleranfällig.

Unbenannte Parameter, so sie denn überhaupt noch eingesetzt werden, stehen am Anfang der Parameterliste und sind primär für Pflichtparameter zu verwenden; also die Schlüsselinformation, ohne die die Vorlage überhaupt nicht nutzbar wäre oder die ansonsten die Kernbedeutung trägt. Das ist meist nur für einen, höchstens zwei unbenannte Parameter möglich. Sobald die Parameter optional werden und nur gelegentlich angegeben werden, ist es äußerst verwirrend, sich zur siebten Option durchzählen zu müssen und entsprechend viele Pipe-Symbole als leere Zuweisungen zwischenzuschalten.

Nicht gemeint ist hierbei, wenn beliebig viele Parameter alle die gleiche Bedeutung haben, etwa in Vorlage:min oder Vorlage:Anker.

Bei der Angabe ohne den Parameternamen („Ziffer gleich“) kommt es zu Problemen für die Anwender, wenn der Parameterinhalt ein Gleichheitszeichen enthält. Der Wert würde ignoriert werden, weil alles bis zum ersten Gleichheitszeichen als Parametername interpretiert werden muss. Bei benannten Parametern kann dies nie auftreten. Aus diesem Grund werden projektweite Basisvorlagen, bei denen der Parameter formatierte und komplexe Inhalte enthalten kann, auf benannte Parameter wie Inhalt= oder Text= migriert.

Falls ein unbenannter Parameter bei der Einbindung nur zwischen Pipe-Symbolen als | Wert | angegeben wird, bleiben die umgebenden Leerzeichen dem Wert erhalten; er wird nicht „getrimmt“.

Benannte Parameter

Deren Wert wird immer „getrimmt“.

Ebenfalls getrimmt wird ein eigentlich unbenannter Parameter, falls bei der Einbindung die Form |2=Wert verwendet wird statt einfach nur der Wert als | Wert |.

Zur Namensgebung siehe oben.

Aliasnamen

Wenn ein und derselbe Wert von unterschiedlich identifizierten Parametern bestimmt werden kann, so werden diese „Alias“ genannt.

Aliasnamen sind in der deutschsprachigen Wikipedia sehr ungern gesehen, und sie werden langfristig möglichst vermieden und eliminiert. In zwei Fällen kann ein Alias sinnvoll sein:

Zu jedem Wert soll es nur einen Haupt-Namen geben; alle anderen Varianten sind ein Alias. Auswertungen des gesamten Bestandes und Suche nach Wertzuweisungen sollten erfolgreich sein, wenn nach dem eigentlichen Namen analysiert wird. Jede Variante verkompliziert das enorm.

Bei längerfristig parallel unterhaltenen Namen müsste eigentlich zu jedem Alias eine Abfrage auf Doppelzuweisung programmiert werden, die eine Fehlersituation auslöst, falls beiden Varianten ein aktueller Wert zugewiesen wurde, und womöglich gar unterschiedliche. Wenn ohnehin beabsichtigt ist, den Alias baldmöglichst zu eliminieren, kann das entfallen.

Absolut unerwünscht ist es, bei einer neuen Programmierung einen bunten Strauß an Aliasnamen zu vereinbaren. Dahinter steckt die Idee, bei der Anwendung könne man aufs Geratewohl irgendeine Schreibweise verwenden, und die würde dann auch zum Erfolg führen. Das hat sich jedoch als nicht zielführend erwiesen:

Wenn ein Aliasname als solcher dokumentiert wird, dann müssen alle Varianten in der Programmierung absolut gleichartig behandelt werden, auch wenn die erstgenannte Schreibung bevorzugt wird.

Vorgabewert

Eine robuste Bereitstellung eines Vorgabewerts (default) erfolgt mittels #if:

((#if: (({Dings|))} | (({Dings))} | Vorgabewert))

Anders als die Basis-Syntax suggeriert, hat dieser Ausdruck den Vorgabewert immer dann, wenn der Parameter Dings nicht oder mit leerer Zuweisung angegeben wurde.

Viele Programmierungen aus den allerersten Jahren hatten sich darauf verlassen, dass niemals jemand eine leere Zuweisung tippen würde, weil es damals noch keine Einzel-Dokumentationen mit Kopiervorlagen gab.

Leere Angabe

Wenn einmal absichtlich der Vorgabewert völlig unterdrückt werden soll, so ist ein - (U+002D) üblich, um diese Situation zu kennzeichen, weil dies fast nie ein sinnvoller Wert ist (außer mal bei Vorlage:Zeichen oder Vorlage:Taste).

Damit wird deutlich gemacht, dass hier bewusst weder Wertzuweisung noch Vorgabewert wirken sollen, während ein leerer oder fehlender Parameterwert keine besonderen Absichten verrät. Realisiert werden kann dies mittels #ifeq:

((#ifeq: (({Dings))} | - | | Präsentation von (({Dings))))}

Falls bei der Einbindung |Dings=- angegeben wurde, ist das Ergebnis eine leere Zeichenkette; andernfalls erfolgt eine Verarbeitung des Wertes, ggf. auch mit einem Vorgabewert.

Einbindung anderer Elemente im Parameterwert

Ergebnis der Einbindung[Bearbeiten | Quelltext bearbeiten]

Zeichen Entity
; &#59;
: &#58;
* &#42;
# &#35;
Leer­zeichen &#32;
Zeilen­umbruch &#10;
Pipe | ((!))

Das Ergebnis einer Seiteneinbindung („Expansion“) ist schlicht der Wikitext, der sich ergibt, nachdem alle Ausdrücke ausgewertet wurden und alle aktuellen Parameterwerte ihre Platzhalter ersetzt haben.

Das Ergebnis der Seiteneinbindung mit einer bestimmten Signatur an Parameterzuweisungen wird im Cache abgelegt. Bei zukünftigen Einbindungen mit dieser Parameterkonstellation wird dieser Wikitext komplett aus dem Speicher abgerufen und ersetzt die Einbindung, egal auf welcher Seite sie auftritt – es sei denn, es wären seitenabhängige Funktionen aktiviert, wodurch ggf. Nummer des Namensraums oder Seitentitel zum Teil der Signatur werden müssen. Nach Veränderung der Programmierung werden hingegen alle hinterlegten Resultate ungültig und eliminiert, ebenso die gespeicherten Wikitexte der Seiten, die darauf aufbauten.

Nützliche Wikisyntax[Bearbeiten | Quelltext bearbeiten]

Verschiedene in sonstigen Texten ungewöhnliche bis unerwünschte Wikisyntax ist wichtig für eine Programmierung:

Für jede komplexere Vorlage wird die Nutzung der Kontrollstruktur-Funktionen unverzichtbar sein.

Außerdem gibt es:

Fehlersituationen[Bearbeiten | Quelltext bearbeiten]

Durch falsche oder ganz fehlende Parameterwerte, aber auch durch andere Situationen wie eine Einbindung im falschen Namensraum, fehlende erwartete andere (Vorlagen-)seiten oder fehlende Substitution kann es zu aktuellen Problemen dieser Einbindung kommen.

Modernisierte Programmierungen analysieren ihre Probleme und machen sich bemerkbar. Das ist jedoch recht aufwändig und aus Kapazitätsgründen nur bei projektweit besonders häufig eingebundenen Vorlagen nachzurüsten.

Fehler anzeigen

An den meisten Stellen der Darstellung kann ein Element mit einer Fehlermeldung angezeigt werden.

Beispiel:

((#ifeq: ((#expr: (({Jahr|0))} > ((LOKALES_JAHR)) )) | 1 |
<span class="error editoronly" style="display:none">Fehler in [[Vorlage:Dings]] – Jahr (({Jahr))} liegt in der Zukunft.</span>((#ifeq: ((NAMESPACENUMBER)) | 0 | [[Kategorie:Wikipedia:Vorlagenfehler/Vorlage:Dings]])) ))

Fehler überwachen

Die Auslösung einer Wartungskategorie ist die sicherste und effizienteste Möglichkeit, um die korrekte Verwendung von Vorlagen zu überwachen.

In den frühen Jahren wurden Verlinkungen auf nicht existierende Seiten generiert, und diese Seiten wurden dann daraufhin ausgewertet, welche anderen Seiten damit verlinkt wären.

Unter bestimmten Bedingungen, wenn das Problem innerhalb nicht dargestellter Syntaxkonstrukte auftritt, könnte das Auslösen der Einbindung einer bestimmten nicht existierenden Seite allerdings der einzige Weg sein, um eine Fehlersituation zu kommunizieren.

Bedingte Einbindung[Bearbeiten | Quelltext bearbeiten]

Mit diesen drei Tags lässt sich die Einbindung steuern:

<noinclude></noinclude>
In der Quellseite wird alles angezeigt, der Text zwischen den Tags wird aber nicht in die einbindende Seite übernommen.
Damit können Vorgabewerte für die Präsentation als Vorlagenseite selbst die fehlenden Einbindungsparameter simulieren.
Wichtig auch bei Anträgen zum Löschen.
<onlyinclude></onlyinclude>
In der Quellseite wird alles angezeigt, in der einbindenden Seite aber nur der eingeschlossene Text darin und sonst nichts.
Alle anderen Bereiche werden für die Einbindung ignoriert.
Es ist der sicherste Weg, genau den beabsichtigten Teil einer Vorlagenprogrammierung einzubinden, nicht aber irrtümlich noch Leerzeichen oder gar Zeilenumbrüche anzuhängen.
Die Quellseite wird außerhalb dieses Bereichs kategorisiert, die Zielseite wird aber dadurch nicht mitkategorisiert.
<includeonly></includeonly>
Der Text darin wird nur in der einbindenden Seite angezeigt, aber nicht in der Quellseite.
Damit kann man zum Beispiel die einbindende Seite kategorisieren, die Quellseite kommt aber nicht in diese Kategorie.
Dadurch werden in Vorlagen Darstellungen der Vorlagenseite selbst ausgeschlossen, die nur bei Einbindung mittels Pflichtparametern sinnvoll sind, ansonsten aber Fehlermeldungen und Syntaxbruchstücke zeigen würden.

Expansion[Bearbeiten | Quelltext bearbeiten]

Die Auflöung aller Einbindungen sowie ggf. die Auswertung aller elementaren Parserfunktionen nennt sich „Expansion“.

Anschließend ist im Wikitext nur noch einige Basis-Syntax vorhanden, zur Kursiv- und Fettschreibung, für Verlinkungen sowie Verweise auf komplexe Syntaxstrukturen.

Substitution[Bearbeiten | Quelltext bearbeiten]

Eine Substitution aller eingebundener Seiten ist möglich. Jedoch sind die meisten Vorlagen nicht dafür vorbereitet und würden unübersichtliche Mengen unbrauchbarer Syntax zurücklassen. Alle Konstrukte müssen einzeln für eine geplante Substitution vorbereitet werden, und dies auch erprobt sein, bevor eine Vorlage zur Substitution freigegeben werden kann.

Leerzeichen: Werte trimmen[Bearbeiten | Quelltext bearbeiten]

Insbesondere bei unbenannten Parametern,[1] gelegentlich auch bei anderen Konstrukten wie (({A|))} (({B|))} (({C|))} oder bestimmten Resultaten von Parserfunktionen könnten Leerzeichen, Zeilenumbrüche (allgemein: „Whitespace“) vor oder nach dem Wert die Funktionalität oder Darstellung stören. Die Entfernung solcher Zeichen wird als „trimmen“ bezeichnet.

Vor allem bei Konstruktion einer URL sind Leerzeichen problematisch. Sie würden bewirken, dass die URL an dieser Stelle abbricht.[2]

In den frühen Jahren der Wikipedia wurden die Quelltexte händisch und in einem Stück mit wenigen unbenannten Parametern getippt: ((Beispielvorlage|42|4662)). Sie fangen oft nicht das heutzutage verbreitete Layout ab, bei denen zur besseren Verteilung auf die Quelltextzeilen gern Leerzeichen vor oder um Pipe-Symbole | eingefügt werden, oder gar die Einbindung auf mehrere Zeilen verteilt wird.

Zeitgemäße Vorlagen müssen so programmiert sein, dass sie sich sowohl bei Leerzeichen oder Zeilenumbrüchen wie auch bei leeren Parameterwerten so verhalten wie intuitiv erwartet – dass dies schlicht ignoriert wird.

Die effizienteste Methode zum Trimmen ist das Konstrukt ((#if:trim|(({1|))))} – es liefert immer den Wert von (({1|))}, da trim immer „wahr“ ist. Weil der Parameter (({1|))} aber innerhalb einer Parserfunktion verwendet wird, ist der Wert derjenige von (({1|))} ohne führende und schließende Leerzeichen. Das Schlüsselwort trim zeigt der Nachwelt den Zweck dieser auf den ersten Blick unsinnigen Konstruktion an.

Jeglicher Versuch der Trimmung löst allerdings bei einem Aufzählungszeichen ;:*# zu Beginn des Wertes einen vorangestellten Zeilenumbruch aus; siehe Ergebnis.

Der Aufwand beim Umgang mit ungetrimmten Werten ist neben der unmittelbaren Nachvollziehbarkeit ein wesentlicher Grund, warum statt unbenannter Parameter besser benannte zu verwenden sind.

Alle normalen Versuche zur Trimmung, sowohl bei benannten Parametern wie auch mittels einer Parserfunktion, reagieren immer nur auf „ASCII-Whitespace“ (Leerzeichen U+0020, Tabulator U+0008, Zeilenumbruch U+0010). Die MediaWiki-Software behandelt „Unicode-Whitespace“, beginnend mit einem geschützten Leerzeichen aller Breiten, „nullbreiten“ Zeichen, „bidi“, die ebenfalls unsichtbar sind oder wie ein Leerzeichen wirken, als regulären Text.

Beim Zusammensetzen von Texten aus Wörtern können Leerzeichen erwünscht sein; durch &#32; lassen sie sich vor unbeabsichtigter Entfernung schützen.

Beispiel: Tabellen[Bearbeiten | Quelltext bearbeiten]

Das nachstehende Codebeispiel erläutert am Beispiel einer fiktiven Infobox, wie die Elemente der Vorlagensyntax zusammenwirken, um abhängig vom entsprechenden Parameter der Einbindung eine Zeile der Infobox zu generieren.

))((#if: (({Geschwindigkeit|))} | <nowiki />
   ((!))-
   !style="text-align:left"((!)) Geschwindigkeit
   ((!)) (({Geschwindigkeit))} km/h
))((#if: (({Passagiere|))} |

Falls bei der Einbindung |Geschwindigkeit=200 zugewiesen wurde, expandiert der Bereich wie folgt:

   |-
   !style="text-align:left"| Geschwindigkeit
   | 200 km/h

Testen[Bearbeiten | Quelltext bearbeiten]

Bei der Quelltextbearbeitung von Vorlagen (und Modulen) gibt es am Ende des Bearbeitungsformulars ein weiteres Textfeld, in das ein Seitenname eingegeben werden kann.

Spielwiesen

Kurzzeitige Experimente können durch Bearbeiten der Vorlage:Spielwiese ausprobiert werden.

Jede eigene Benutzerseite kann auch zur unbefristeten Erprobung von Vorlagenprogrammierungen angelegt und unter entsprechendem Namen auf anderen Seiten mit Parametern eingebunden werden (allerdings nicht in produktiven Seiten, insbesondere nicht in enzyklopädischen Artikeln).

Wenn die Auswirkungen von Änderungen an Vorlagen mit komplexeren Abhängigkeiten überprüft werden sollen, z. B. an Vorlagen, die wiederum von anderen Vorlagen verwendet werden, bietet sich die Spezial:Vorlagenspielwiese mit dem unter Hilfe:Vorlagenspielwiese beschriebenen Anwendungsfall an.

Vorlagen expandieren

Vorlagen mit Parserfunktionen können auf der Spezialseite Vorlagen expandieren getestet werden.

Dabei wird die Einbindung der Vorlage mit ihren Parametern in das „Eingabefeld“ kopiert:

((Infobox Orte in Lampukistan
| Name = <!-- Vorgabe: Lemma -->
| Wappen =
| Gründung = 1958
| Einwohner = 2006
))


Über das Feld „Kontexttitel“ kann optional ein Seitenname übergeben werden, der den seitenabhängigen Kontext (das Lemma) ((PAGENAME)) konfiguriert:

BeispielOrt

Im Beispiel führt dies dazu, dass in der Vorschau oberhalb der Infobox nicht „ExpandTemplates“, sondern „BeispielOrt“ angezeigt wird.

Weitere Informationen finden sich unter mw:Help:ExpandTemplates (englisch).

Dokumentation[Bearbeiten | Quelltext bearbeiten]

Siehe: Hilfe:Vorlagendokumentation zu den Einzelheiten.

Jede nicht-triviale Vorlage soll mit einer Dokumentation ausgestattet werden.

Trivial wäre eine Vorlage ohne Parameter, deren Funktionalität offensichtlich ist.

Kategorisierung[Bearbeiten | Quelltext bearbeiten]

Jede Basis-Vorlage (abgesehen von Unterseiten) ist an mindestens einer Stelle in Kategorie:Vorlage: zu kategorisieren.

Löschen[Bearbeiten | Quelltext bearbeiten]

Beim Einfügen eines SLA oder Löschantrags ist unbedingt darauf zu achten, dass sie in <noinclude> eingeschlossen werden; andernfalls würden sämtliche jetzt oder später einbindenden Seiten ebenfalls entsprechend kategorisiert.

Ein SLA durch das erstellende Benutzerkonto wird üblicherweise diskussionslos umgesetzt, wenn es keine produktiven Einbindungen mehr gibt. Andere SLA müssen geeignet begründet werden, und es sollen keine Einbindungen außer im Rahmen der Vorlagendoku selbst auftreten.

Für einen regulären Löschantrag mit Diskussion ist nicht erforderlich, dass bereits Einbindungen ersetzt werden; dies geschieht ggf. erst nachträglich nach entsprechender LD/LP, und nach Abschluss der Aufräumarbeiten kann das ggf. nochmals über einen SLA vollendet werden.

Grenzen und Lua[Bearbeiten | Quelltext bearbeiten]

Die Vorlagensyntax ist historisch gewachsen und war ursprünglich nur zur Transklusion konstanter Textbausteine vorgesehen gewesen, die noch nicht einmal Parameter hatten. Diese „Programmiersprache“ ist nicht darauf angelegt, komplexe Aufgaben zu lösen, etwa über Schleifen, unbegrenzt viele Parameter oder die Definition lokaler Variablen.

2013 wurde mit Lua eine Möglichkeit bereitgestellt, in einer höheren Programmiersprache alle im Wiki-Kontext möglichen Aufgaben effizient zu lösen. Allerdings bedarf das der Einarbeitung und Erfahrung, um wartungs- und zukunftsfähige Programmierungen bereitzustellen, und es gibt nur wenige andere Projektbeteiligte, die eine solche Programmierung dann pflegen könnten. Sofern möglich, sollte innerhalb der Vorlagensyntax verblieben werden, die zumindest rudimentär durch Tausende in der Wikipedia aktualisiert werden kann.

Das Problem der fehlenden Definitionsmöglichkeit für interne Variablen ist über Untervorlagen lösbar: Ein einmalig vorverarbeiteter und durch komplexe Aktionen generierter Wert wird als Parameter an eine Untervorlage übergeben. In der Programmierung der Untervorlage ist es nunmehr ein einfacher Parametername und kann übersichtlich in Ausdrücken auch mehrfach genutzt werden, ohne jeweils den Wert kompliziert neu bilden zu müssen.

Effizienzfragen können bei der ersten selbst erstellten Vorlage außer Acht gelassen werden. Bei Vorlagen, die in viele Seiten eingebunden werden, oder aber viele kritische Funktionen nutzen, kann eine spätere Optimierung ratsam sein.

Anmerkungen[Bearbeiten | Quelltext bearbeiten]

  1. Benannte Parameterwerte sind per Definition immer getrimmt.
  2. Sollen Leerzeichen wirksame Bestandteile von URL sein, bietet sich urlencode an.