Extension:Loops/de

While- und do-while-Schleifen, wie sie in Programmiersprachen verwendet werden. Die Variable $maxLoops legt das Maximum der erlaubten Schleifen fest (Standardwert 100).

Syntax
For technical reasons, the preprocessor in v1.12alpha and later handles the first parameter differently than the rest, so it's ignored for the #while and #dowhile parser functions in order for them to work. See bug 12842.

#while
{ {#while}} führt so lange eine Schleife aus (d. h., gibt einen bestimmten Quelltext wiederholt an den Parser), bis der Bedingungstext etwas anderes als Leerstellen enthält.

Beispiele
Die folgenden Beispiele nutzen die Erweiterung Variables.

Dieser Quelltext:

ergibt folgendes:


 * 0
 * 1
 * 2
 * 3
 * 4

{ {#while}} kann auch in Vorlagen verwendet werden, um eine nummerierte Reihe zu erzeugen. Wenn bspw. die Vorlage "Loop-Test" folgendes enthält:

dann kann mit diesem Quelltext:

folgendes erzeugt werden:


 * zero
 * one
 * two
 * three
 * four

Leeräume wie Leerzeichen, Tabulatoren und Zeilenumbrüche am Anfang oder am Ende aller Parameter werden abgeschnitten. Wenn das nicht gewünscht ist, müssen HTML-Kodierungen wie &amp;#32; verwendet werden.

#dowhile
{ {#dowhile}} erfüllt genau dieselbe Aufgabe wie { {#while}}, mit der Ausnahme, dass der auszuführende Quelltext in jedem Fall mindestens einmal vom Parser verarbeitet und angezeigt wird (wenn es anzuzeigenden Text ergibt). Dies erfolgt vor der Berechnung der Bedingung.

#loop (in der Testphase)
{ {#loop}} lässt den Parser wiederholt einen auszuführenden Quelltext bearbeiten und ausgeben – wie oft, das legt die Anzahl der auszuführenden Schleifen fest. Der Startwert wird als Variable mit dem angegebenen Namen gespeichert (aufrufbar mit der Funktion { {#var:}} der Erweiterung Variables). Nach jeder Schleife wird die Variable um eins erhöht, wenn die Schleifenanzahl positiv ist, oder verringert, wenn sie negativ ist.

Beispiel
Der folgende Quelltext:

ergibt:


 * Das ist Runde 4 und es liegen 3 weitere Runden vor uns
 * Das ist Runde 5 und es liegen 2 weitere Runden vor uns
 * Das ist Runde 6 und es liegen 1 weitere Runden vor uns
 * Das ist Runde 7 und es liegen 0 weitere Runden vor uns

#forargs (in der Testphase)
{ {#forargs}} ist für Vorlagen vorgesehen. Es speichert Parameterwerte, die an eine Vorlage übergeben wurden, in Variablen, die mit der Funktion { {#var:}} der Erweiterung Variables aufgerufen werden können.

Diese Funktion geht jeden vom Vorlagennutzer angegebenen Parameter durch, der mit dem  beginnt, speichert seinen Namen (ohne ) in die Variable  und seinen Wert in die Variable . Danach wird der angegebene Quelltext ausgeführt, in dem nun { {#var:&lt;Schlüssel>}} und { {#var: &lt;Wert>}} benutzt werden können.

Beispiel
Wenn die Vorlage "Loop-Test" folgendes enthält:

dann ergibt dieser Quelltext:

das folgende:


 * 1 = 42
 * 5 = 1337
 * ameter = Wert

#fornumargs (in der Testphase)
{ {#fornumargs}} entspricht { {#forargs}} mit zwei wichtigen Unterschieden: Es wird kein Parameter-Präfix angegeben und es ist nur für reine Zahlenparameter wie  gedacht, egal, ob explizit oder implizit angegeben:

Beispiele
in Arbeit

Installation
Um die Funktionen #loop, #forargs und #fornumargs nutzen zu können, muss die Erweiterung Variables installiert sein. Die Loops-Erweiterung wird einfach durch den folgenden Eintrag in der LocalSettings.php installiert:

Konfiguration

 * ExtLoops::$maxLoops: Diese Variable gibt die maximale Anzahl der Schleifen an, die auf einer Seite ausgeführt werden dürfen. Standardwert ist 100. Wird ein negativer Wert angegeben, so läuft die Erweiterung mit den Begrenzungen der PHP-Umgebung. Diese Variable betrifft nicht die Funktionen { {#forargs:}} und { {#fornumargs:}}.


 * $egLoopsEnabledFunctions</tt>: Configuration variable (array) to define which Loops functions should be enabled. By default all functions are enabled in case Variables extension is installed as well. If Variables extension is not installed,,   and   will be disabled since they don't work without Variables extension. To disable fornumargs and forargs function one can use:

Siehe auch

 * Control Structure Functions für MediaWiki 1.11 (en)
 * LoopFunctions (en)
 * VariablesExtension (en)