- Achtung: Diese Seite ist möglicherweise nicht mehr auf dem neusten Stand. Besuche
General usage and invocation syntax für eine aktuelle Version!
| DPL-Handbuch | |
|---|---|
| Primäre DPL-Dokumentation | Allgemeine Verwendung • Kriterien für die Seitenauswahl • Steuerung des Ausgabeformats • Steuerung der Ausgabereihenfolge • Steuerung der Ausgangsmenge • Andere Parameter |
| Andere DPL-Module | dplchapter • dplvar • dplreplace • dplnum • dplmatrix |
| Praktische Zeichen | ²{ • }² • « • » • ¦ • ¶
|
| DPL-Handbuch | |
|---|---|
| Primäre DPL-Dokumentation | |
| Allgemeine Verwendung • Kriterien für die Seitenauswahl • Steuerung des Ausgabeformats • Steuerung der Ausgabereihenfolge • Steuerung der Ausgangsmenge • Andere Parameter | |
| Andere DPL-Module | |
| dplchapter • dplvar • dplreplace • dplnum • dplmatrix | |
| Praktische Zeichen | |
²{ • }² • « • » • ¦ • ¶
| |
DynamicPageList3 (DPL3) kann als Parser-Erweiterung (<DPL> .... </DPL>) oder als Parserfunktion ({{#dpl: .... }}) verwendet werden. Es gibt keine allgemeine Regel, welche davon besser ist. Im Zweifelsfall solltest du die Parserfunktionssyntax verwenden, da sie leistungsfähiger ist.
- Beispiel Ausgabe
Die beiden folgenden Beispiele, die den Unterschied zwischen der Verwendung von DPL als Parsererweiterung und der Verwendung als Parserfunktion verdeutlichen, liefern eine Liste aller Artikel, die zu kat1 oder kat2 gehören und einen Verweis auf meineSeite enthalten. Die Ausgabe dieser DPL-Aufrufe würde etwa so aussehen:
- Seite 1
- Seite 2
- Eine weitere Seite
Parser-Erweiterungsmethode[]
Das folgende Beispiel würde wahrscheinlich direkt auf einer Artikelseite verwendet werden, könnte aber auch als Teil einer Vorlage eingefügt werden. Parser-Erweiterungen definieren einen bestimmten Tag (in diesem Fall <DPL>) und einen entsprechenden End-Tag (</DPL>). Der Text zwischen diesen Tags wird an das Erweiterungsmodul übergeben, so wie er ist.
Beispielsyntax[]
<DPL>
category = kat1|kat2
# nur Seiten, die einen Link zu meineSeite enthalten
linksto = meineSeite
</DPL>
Verarbeitungs-Verfahren[]
Die Wiki-Markup-Erweiterung findet nicht statt, bevor die Befehle an das Erweiterungsmodul übergeben werden.
- Dies kann nützlich sein, wenn du Wiki-Syntaxelemente als Argumente an DPL3 übergeben willst (siehe z. B. die Option Vorlage:DPL23).
- Magische Wörter wie
{{PAGENAME}}oder{{CURRENTDAY}}können nicht verwendet werden. - Vorlagenaufrufe wie
{{eine Vorlage}}, können nicht als Parameter verwendet werden. - Parserfunktionsaufrufe wie
{{#if:...|...|...}}können nicht in Argumenten verwendet werden. - Um Wiki-Syntax-Elemente als Parameter an DPL zu übergeben, ist es manchmal notwendig, einen Zeilenumbruch zu erzwingen. Der Grund dafür ist, dass die Wiki-Syntax auf Zeilenumbrüche angewiesen ist. Verwende stattdessen
\noder¶für diesen Zweck.
Syntax-Funktionen[]
- Jede Parameterzuweisung (=Befehl) muss in einer eigenen Zeile stehen.
- Zeilen, die mit einem
#beginnen, werden ignoriert (Kommentar). - Im Allgemeinen sieht die Syntax recht einfach und intuitiv aus, da sie keine Sonderzeichen enthält (außer den beiden umschließenden Tags).
- Die Groß- und Kleinschreibung der Tags spielt keine Rolle, sodass sie auch als
<dpl>geschrieben werden kann. - In vielen Fällen ist eine Makroexpansion innerhalb der Parameterliste nicht erforderlich. Beachte, dass im obigen Beispiel das Pipe-Zeichen (das verwendet wird, um ein logisches ODER zwischen den beiden Kategorien zu definieren) so geschrieben werden kann, wie es ist. Der Name der Seite (meineSeite) muss jedoch eine fest kodierte Konstante sein.
Parserfunktion-Methode[]
Dieses Beispiel wird innerhalb einer Vorlage verwendet und verwendet die Variable {{{1}}}, die an die Vorlage übergeben wird. Parserfunktionen sehen aus wie Vorlagen, die mit einem Rautezeichen (#) beginnen. Sie sind enger in das Wikisystem integriert. Sie sind leistungsfähiger, aber ihre Syntax sieht etwas komplizierter aus. Der Text zwischen diesen Tags wird vor der Übergabe an das Erweiterungsmodul verarbeitet, um das Wiki-Markup zu erweitern.
Beispielsyntax[]
{{#dpl: category = kat1{{!}}kat2 | linksto = {{{1}}} }}
oder
{{#dpl:
|category = kat1¦kat2
|linksto = {{{1}}}
}}
Verarbeitungs-Verfahren[]
Wiki-Markup-Erweiterungen (nicht die endgültige Umwandlung in HTML) finden statt, bevor die Befehle an das Erweiterungsmodul übergeben werden.
- Magische Wörter wie
{{PAGENAME}}oder{{CURRENTDAY}}können verwendet werden. - Vorlagenaufrufe, wie
{{eine Vorlage}}, können als Parameter verwendet werden. - Parserfunktionsaufrufe wie
{{#if:...|...|...}}können in Argumenten verwendet werden.
Syntax-Funktionen[]
- Wenn du Wiki-Zeichen als Argumente verwenden willst, musst du sie umgehen.
- Es ist möglich, das magische Wort
{{!}}zu verwenden, das ein einzelnes | Symbol als Inhalt enthält. - Mit DPL ist es auch möglich, das Symbol
¦anstelle von|zu verwenden; dies ist sehr intuitiv und könnte vielleicht von MediaWiki im Allgemeinen übernommen werden... aber Vorsicht: es muss durch Kopieren und Einfügen von hier (oder von einem HTML-Symbol oder einer erweiterten ASCII-Tabelle wie der Zeichentabelle von Windows) eingefügt werden, da es normalerweise auf einer Tastatur nicht verfügbar ist (noch schlimmer: auf einigen Tastaturen wird das Standard-Pipe-Zeichen so gedruckt, dass es eher wie die „gebrochene Pipe“ aussieht).
- Es ist möglich, das magische Wort
- Der Text kann (muss aber nicht) in einer Zeile geschrieben werden, Parameter werden durch Pipe-Zeichen getrennt.
- Was zuvor über explizite Zeilenumbrüche gesagt wurde, gilt auch für die Syntax von Parserfunktionen, d. h. die Sonderzeichen
\noder¶müssen verwendet werden, um ein explizites Zeilenvorschubzeichen in den Wiki-Ausgabestrom einzufügen, wenn Wikisymbole verwendet werden, die am Anfang einer Zeile stehen müssen.
Hinweis: Das Pipe-Zeichen, das verwendet wird, um ein logisches ODER für die beiden Kategorien zu definieren, muss als Aufruf des magischen Worts {{!}} dargestellt werden, das ein einzelnes Pipe-Zeichen als Inhalt hat. Die gleiche Art von Trick findet sich auch außerhalb von DPL in anderen Vorlagen. Das zweite Beispiel zeigt, dass das Zeichen ¦ eine Alternative zu dieser etwas umständlichen Schreibweise darstellt.
Das zweite Beispiel ist nicht wörtlich äquivalent zum ersten, da vor dem ersten Parameter ein zusätzliches Pipe-Zeichen steht. Technisch gesehen entsteht dadurch ein zusätzlicher leerer Parameter, aber da leere Parameter von DPL stillschweigend ignoriert werden, macht das keinen Unterschied.
#dplchapter[]
Neben #dpl gibt es eine weitere Parserfunktion, die du in deinem Wiki-Text verwenden kannst. Sie heißt #dplchapter und extrahiert den Text eines Abschnitts aus einem beliebigen Wiki-Text, den sie als Parameter erhält.
Zeichen mit besonderer Bedeutung[]
Manchmal ist es notwendig, ein Zeichen als „reine Daten“ an einer Stelle zu verwenden, wo es normalerweise eine syntaktische Bedeutung hat. MediaWiki ist im Allgemeinen nicht sehr sorgfältig im Umgang mit Zeichen-Umgehung. Also mussten wir unseren eigenen Weg im Dschungel der „Zeichen-Umgehung“ definieren:
| DPL Umgehungs-Zeichen | MediaWiki-Zeichen | Typische Verwendung |
|---|---|---|
» |
> | Aufruf einer anderen MediaWiki-Erweiterung als Parameter eines DPL-Aufrufs |
« |
< | |
²{ |
{{ |
Aufruf einer Vorlage innerhalb der „Artikelschleife“ von DPL. Dies ist besonders nützlich für die Verschachtelung von DPL-Aufrufen (DPL-Rekursion) |
}² |
}}
| |
¦ |
|
| |
¶ |
Zeilenumbruch | Fügt einen Zeilenumbruch in die Wikitextausgabe von DPL ein, damit die Syntax des ersten Zeichens korrekt analysiert werden kann (z. B. * # : ;)
|
\n |
Zeilenumbruch |
DPLs Mechanismus zum Ersetzen von %xx%-Variablen kann dann verwendet werden, um die Argumente dieses Aufrufs zu ändern, bevor er aufgelöst wird. Die meisten DPL-Benutzer werden dies nicht brauchen, aber für einige fortgeschrittene Anwendungen von DPL ist es eine echte Hilfe.
Eingebaute Variablen[]
Innerhalb einer DPL-Anweisung kannst du einige Variablen verwenden, die von DPL implizit gesetzt werden. Beispiel: %TITLE%, %PAGE%.
Einige Variablen können nur in der Kopf- oder Fußzeile verwendet werden, wie z. B. %PAGES%, %TOTALPAGES%
URL-Parameter[]
DPL versteht eine Reihe von Parametern, die über eine URL-Angabe übergeben werden können. Diese URL-Parameter beginnen alle mit DPL_:
DPL_count: beeinflusst den Parametercount(überschreibt den in der DPL-Anweisung angegebenen Wert)DPL_offset: beeinflusst den Parameteroffset(überschreibt den in der DPL-Anweisung angegebenen Wert)DPL_refresh: wenn mit dem Wert „yes“ verwendet, wird der DPL-Zwischenspeicher gelöschtDPL_fromTitle: beschränkt die Auswahl auf Artikel mit einem Seitentitel, der größer oder gleich dem angegebenen Wert istDPL_toTitle: schränkt die Auswahl auf Artikel ein, deren Seitentitel kleiner oder gleich dem angegebenen Wert istDPL_arg1,DPL_arg2, ...DPL_arg5: dies sind generische Parameter, die frei verwendet werden können, um eine DPL-Anweisung zu beeinflussen
Der Befehl: https://community.fandom.com/de/wiki/Community-Wiki?DPL_offset=20 würde Community-Wiki anzeigen und den Offset-Parameter auf einen Wert von 20 setzen.
Innerhalb der DPL-Anweisung kannst du auf URL-Parameter über {%DPL_xxx%} zugreifen. Wenn ein Parameter in der URL nicht angegeben ist, nimmt DPL eine leere Zeichenfolge an. Stattdessen kannst du einen Standardwert definieren, indem du einen Doppelpunkt verwendest: {%DPL_xxx:yyy%}.
In diesem Fall verwendet DPL „yyy“, wenn der Parameter DPL_xxx nicht in der URL-Befehlszeile angegeben ist.
In diesem Handbuch verwendete Syntax[]
Wenn wir vollständige Beispiele geben, werden wir normalerweise die Tag-basierte Syntax der Parsererweiterung in diesem Handbuch verwenden. Es sei denn, wir wollen von der Variablenerweiterung Gebrauch machen.
Der größte Teil des Handbuchs befasst sich mit der Erklärung der einzelnen Parameter. Dies ist unabhängig von der Wahl zwischen den beiden oben beschriebenen Varianten. Wenn du also etwas liest wie
- Parameter = Wert
solltest du daran denken, dass du entweder DPL-Tags einfügen musst (mit einer separaten Zeile für jeden Parameter) oder die Syntax der Parserfunktionen verwenden und die Parameter durch Pipe-Zeichen trennen musst.
Zeitstempel[]
DPL-Abfragen, die Datums-/Zeitinformationen zurückgeben (z. B. das Datum der letzten Bearbeitung einer Seite), zeigen diese Informationen entsprechend deiner lokalen Zeitzone an (wenn dies in deinen Benutzereinstellungen korrekt eingestellt ist).
Interaktion zwischen deinem Wiki-Text und der DPL3-Ausgabe[]
Wie bereits erwähnt, fügt DPL3 seine Ausgabe genau an der Stelle ein, an der du den DPL3-Aufruf platziert hast. Das bedeutet, dass du eine Wiki-Syntax um deinen DPL-Aufruf legen kannst, wie z. B.:
{| class="wikitable"
| eine Tabellen-Zelle
| <DPL>
linksto=meineSeite
</DPL>
|-
| noch eine Tabellen-Zelle
| ...
|}
Du könntest auch die HTML-Syntax verwenden, um die DPL-Ausgabe zu umgeben, wie im folgenden Beispiel:
<ul>
<li>Item1</li>
<li>Item2
<DPL>
...Parameter...
</DPL>
</li>
</ul>
Besonderer Hinweis zu Selbstreferenzen[]
Im Prinzip könnte eine DPL-Abfrage so geschrieben werden, dass die Seite, die die Abfrage enthält (oder die Seite, die eine Vorlage enthält, die die Abfrage enthält), Teil der Ergebnismenge ist. Die Erfahrung in der Vergangenheit hat gezeigt, dass dies in einigen Fällen zu unerwünschten Effekten führt. Zum Beispiel enthält die Seite, die die Abfrage enthält, aus der Sicht von MediaWiki Links zu allen Seiten, die sie auflistet. Wenn deine DPL-Anweisung eine „uses“-Angabe enthält, wirst du erstaunt sein, deine eigene Seite in allen Ergebnissen zu finden. Das Gleiche passiert mit Kategorien... Außerdem gab es technische Probleme mit selbstreferenzierenden Ergebnismengen (Parserschleifenreferenzen, die sehr schwer zu lösen schienen). Daher wurde beschlossen, eine Selbstreferenz in der Ergebnismenge standardmäßig zu überspringen.
| Normalerweise gibt DPL seine eigene Seite nicht im Ergebnis zurück. |
|---|
- Der Parameter
skipthispagegibt dir die Kontrolle über dieses Verhalten. Wenn du ihn auf „no“ setzt, kannst du Selbstreferenzen in DPL-Ergebnismengen zulassen. - Du kannst Rückverweise auf eine Seite, die eine DPL-Abfrage enthält, mit
resetund/odereliminateunterdrücken.
Symbolersetzung in mode = userformat[]
Wenn mode = userformat ausgewählt ist, gibt DPL standardmäßig nichts aus. Stattdessen sucht es nach Symbolen in deiner Eingabe (listseparators, secseparators, multisecseparators, tablerow), die es durch ihre entsprechenden Werte ersetzt. Zum Beispiel wird %TITLE% durch den Titel eines Artikels ersetzt, %PAGE% durch den Seitennamen. Wenn du also etwas schreibst wie [[%PAGE%|%TITLE%]], wird DPL einen Link zu einem Artikel erstellen.
Siehe format für eine komplette Liste aller Symbole
Die Angabe von listseparators, secseparators und multisecseparators ist nur in Verbindung mit mode = userformat sinnvoll. Daher wird mode = userformat automatisch impliziert, wenn listseparators angegeben wird. Um die Syntax noch komfortabler zu gestalten, kann das einfache Wort format als Alias für listseparators verwendet werden. So ist:
mode = userformat listseparators = a,b,c,d
das Gleiche wie:
format = a,b,c,d
Verwendung von booleschen Parametern[]
Viele Parameter in DPL haben den Typ Boolean. Das Handbuch geht immer davon aus, dass true und false verwendet werden, um solche Parameter zu setzen. Alternativ kannst du auch yes und no oder 1 und 0 oder on und off verwenden, wie beim Standard-HTML-Formulareingabetyp „checkbox“.
Fehlersuche in einer DPL-Anweisung[]
Wenn du eine DPL-Abfrage schreiben willst, die Wiki-Tabellen erzeugt, ist eine Menge Fantasie gefragt, denn du musst die korrekte Wiki-Syntax als Ergebnis deiner Abfrage erzeugen. Und diese Syntax hängt stark von Zeilenumbrüchen, dem Umgehen von Pipe-Symbolen und anderen netten Kleinigkeiten ab, die man leicht falsch machen kann.
Wir empfehlen dir, die folgenden Parameter zu verwenden, um herauszufinden, welche Syntax deine DPL-Anweisung erzeugt:
resultsheader=«pre»«nowiki» resultsfooter=«/nowiki»«/pre»
Der gleiche Effekt kann mit debug erreicht werden
Tabellen-Ausgabe[]
Wir möchten auch darauf hinweisen, dass es zwei spezielle Befehle namens table und tablerow gibt, die es recht einfach machen, Ausgaben in Tabellenform zu erzeugen.
Scrollen[]
DPL unterstützt das effiziente Scrollen durch große Ergebnismengen.
Der Befehl scroll = yes muss angegeben werden, um das Scrollen zu aktivieren.
DPL kann bestimmte URL-Parameter aus der Befehlszeile übernehmen, wie DPL_fromTitle und DPL_toTitle. Wenn diese Argumente angegeben werden, werden die Befehle title> und title< implizit gesetzt. Innerhalb von resultsheader und/oder resultsfooter kannst du eine Vorlage aufrufen, die Links erzeugt, um die nächste / vorherige Seite zu holen.
Grundsätzlich besteht die Idee des rückwärts Scrollens darin, dass die SQL-Anweisung eine absteigende Reihenfolge erzeugt (mit Titeln unterhalb des Schwellenwertes). Intern puffert DPL die SQl-Ergebnismenge und kehrt die Reihenfolge um. Der Benutzer sieht also eine Seite mit Einträgen direkt unterhalb des Schwellenwerts, aber in aufsteigender Reihenfolge.
Wenn das Scrollen aktiviert ist, nimmt DPL 1.8.0 und höher eine Reihe von Parametern aus der URL-Befehlszeile entgegen, wie z. B. DPL_offset; auf diese Parameter kann in DPL über eine spezielle Syntax zugegriffen werden: {%DPL_offset%} oder {%DPL_offset:defaultvalue%}.
Die Variablen sind:
DPL_countDPL_offsetDPL_refresh(bei einem Wert vonyeswird der DPL-Zwischenspeicher geleert)DPL_fromTitle(wird antitle<übergeben)DPL_toTitle(wird antitle>übergeben)DPL_findTitle(wird antitle>=übergeben)DPL_scrolldir(wird verwendet, um die Sortierreihenfolge zu beeinflussen, kannupoderdownsein)
So könnte man einen Artikel mit dem Namen „MeineBeliebtenArtikel“ schreiben, der eine DPL-Abfrage wie diese enthält:
{{#dpl:execandexit=geturlargs}}
<dpl>
category = Land
count = {%DPL_count:100%}
scroll = yes
resultsheader = Zeigt {%DPL_count:100%} Seiten ab Seite {{#expr:{%DPL_offset%} + 1}}:\n
</dpl>
Wenn du http://community.fandom.com/de/wiki/MeineBeliebtenArtikel aufrufst, erhältst du die ersten 100 Artikel der Kategorie. Wenn du DPL_offset=100 hinzufügst, erhältst du die nächsten einhundert Artikel. Dieser Mechanismus kann verwendet werden, um eine allgemeine Funktion zum Scrollen von Seiten zu erstellen – vorausgesetzt, du kannst auf den Wert von DPL_offset auch in anderen Vorlagen außerhalb von DPL zugreifen. Und hier kommt der Befehl execandexit ins Spiel: Er speichert die URL-Parameter in einer Variablen, auf die über #dplvar zugegriffen werden kann.
Mehr Hilfe[]
- Ein Stichwortverzeichnis zu verschiedensten Hilfeseiten findest du auf Hilfe:Index.
- Einen geordneten Einstieg zur Hilfe gibt es auf der Seite Hilfe:Übersicht.
- Fragen an andere Benutzer kannst du in den Diskussionen des Community-Wikis stellen.
- Anmerkungen zu dieser Hilfeseite kannst du auf der dazugehörigen Diskussionsseite hinterlassen.
- Um Fehler zu melden, kontaktiere bitte das Support-Team.