User:Lilyuserin/Das Geheimnis von tag

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search

Contact

Email Usertalk

This is a Wikimedia Commons user page. If you find this page on any site other than Wikimedia Commons, you are viewing a mirror site. Be aware that the page may be outdated, and that the user this page belongs to may have no personal affiliation with any site other than Wikimedia Commons itself. The original page is located at https://commons.wikimedia.org/wiki/User:Lilyuserin/Das_Geheimnis_von_tag.

العربية  azərbaycanca  беларуская (тарашкевіца)  български  বাংলা  čeština  Deutsch  Deutsch (Sie-Form)  English  Esperanto  español  فارسی  suomi  français  Frysk  galego  עברית  हिन्दी  magyar  հայերեն  Bahasa Indonesia  italiano  日本語  ქართული  한국어  ລາວ  македонски  മലയാളം  Bahasa Melayu  မြန်မာဘာသာ  Nederlands  polski  português  português do Brasil  русский  sicilianu  slovenščina  shqip  svenska  ไทย  Tagalog  Türkçe  українська  Tiếng Việt  简体中文  繁體中文  正體中文(臺灣)  +/−

Wikimedia Commons
Wikimedia Commons
Wie kann ich Parser Extensions mit Transclusion verwenden?

Allgemeines[edit]

Ich habe die Extension DynamicPageList in eine Vorlage eingebaut und stellte fest, dass die Verwendung von Parametern nicht funktionierte.

Die folgende Vorlage

== {{{y|{{CURRENTYEAR}}}}} {{{w|bei {{PAGENAME}} gekaufte }}}Artikel ==
<div style="column-count:{{{z|3}}};-moz-column-count:{{{z|3}}};-webkit-column-count:{{{z|3}}}">
<DynamicPageList>
category = {{PAGENAME}}
category = {{{y|{{CURRENTYEAR}}}}}
namespace = main
ordermethod=sortkey
order  = ascending
</DynamicPageList>

lieferte unerwartete Ergebnisse. Nach einigen Recherchen kam ich drauf, dass die Verwendung einer Parserfunktion (alles, was in spitzen Klammern steht) mit einem Parameter (die dreifach geschweiften Dinger) inkompatibel ist. {{PAGENAME}} wurde ersetzt, {{{y|{{CURRENTYEAR}}}}} jedoch nicht. Es wäre ja zu praktisch gewesen.

Lösung[edit]

Zum Glück gibt es eine Wunderwaffe, die diesem unerwünschten Umstand Abhilfe verschafft.

Ein Beispiel[edit]

Ich hatte mich schon gefragt, was folgendes zu bedeuten hat:

{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang="{{{lang|{{{2|text}}}}}}"}}

Schaut doch ziemlich kryptisch aus, oder nicht? Ìnzwischen weiß ich, was das zu bedeuten hat.

Programmcode etc. schreibt man mit <syntaxhighlight>, das auch schön bunt einfärbt, sofern du es geschafft hast, die Extension SyntaxHighlight vollständig zum Laufen zu bringen. Nachfolgend ein Beispiel:

def quickSort(arr):
	less = []
	pivotList = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass

Das schaut im Quellcode folgendermaßen aus:

<syntaxhighlight lang=python>
def quickSort(arr):
	less = []
	pivotList = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass
</syntaxhighlight>

So weit noch alles klar hoffentlich.

Wie es nicht funktioniert[edit]

Sobald ich jedoch den Quellcode aus einer Unterseite einfügen will, bekomme ich ein Problem.

Diesen Text gebe ich naiverweise in den Wiki-Editor ein, wenn ich den Inhalt der Unterseite User:{{BASEPAGENAME}}/incl als Code darstellen will:

<syntaxhighlight lang=python>
{{User:{{BASEPAGENAME}}/incl}}
</syntaxhighlight>

Das funktioniert nicht wie erwartet (bzw. habe ich nicht erwartet, dass es funktioniert), sondern es kommt folgendes dabei raus:

{{User:{{BASEPAGENAME}}/incl}}

Anstatt den Inhalt aus der Unterseite einzufügen, wird der Text {{User:{{BASEPAGENAME}}/incl}} als Sourcecode dargestellt.

Eigentlich war das zu erwarten, denn <syntaxhighlight> bewirkt, dass jeglicher Text nicht ausgeführt, sondern als Programmcode oder Text dargestellt wird. Woher soll der Highlighter dennn wissen, dass er in diesem Fall erst den Quelltext aus einer Unterdatei holen soll?

So funktioniert es[edit]

Mithilfe der Wunderwaffe #tag klappt es wie gewünscht:

code=def quickSort(arr):
	less = []
	pivotList = []
	more = []
	if len(arr) <= 1:
		return arr
	else:
		pass

Im Quelltext: {{#tag:syntaxhighlight|code={{{{FULLPAGENAME}}/incl}}|lang="python"}}

Nochmal langsam zum Mitschreiben[edit]

Alles, was zwischen zwei spitzen Klammern <...> steht, wird durch eine Parser Extension erzeugt. Welche Parser-Extensions im aktuellen Wiki vorhanden sind, erkennt man auf der Versions-Seite, ganz nach unten blättern.

Auf Wikimedia Commons beispielsweise sind folgende Parser Extensions installiert:

<categorytree>, <ce>, <charinsert>, <chem>, <gallery>, <graph>, <hiero>, <imagemap>, <indicator>, <inputbox>, <languages>, <mapframe>, <maplink>, <math>, <nowiki>, <poem>, <pre>, <ref>, <references>, <score>, <section>, <source>, <syntaxhighlight>, <templatedata> und <timeline>

Wenn du bereits ein Wiki installiert hast, wird dir einiges davon bekannt vorkommen.

Die Include-Systematik (=Transclusion) der MediaWiki-Software funktioniert innerhalb von Parser-Tags nicht, daher behilft man sich mit #tag.

Wie an meinem Beispiel zu erkennen ist, schreibt man die gewünschten Inhalte nicht in spitze, sondern zwischen zwei geschweifte Klammern. Das Schlüsselwort lautet #tag, gefolgt von einem Doppelpunkt und dem Tagnamen, beispielsweise categorytree, charinsert,... das wäre in meinem Beispiel syntaxhighlight. Danach folgt der berühmte senkrechte Strich, der ebenso wie die anderen auf Wikis häufig verwendeten Zeichen [{}] auf der deutschen Tastatur nur schwer zu erreichen ist.

Der Inhalt des Parseraufrufs, also das was von den Schlüsselwörtern <tagname>hier steht mein Parseraufrufsinhalt</tagname> umschlossen wird, wird unmittelbar hinter den ersten senkrechten Strich geschrieben.

Das schaut dann so aus:

{{#tag:tagname|hier steht mein Parseraufrufsinhalt}}

Danach folgen, jeweils getrennt durch senkrechte Striche, die Attribute, das sind die Parameter, die innerhalb der erste spitzen Klammer eingefügt werden, bei <syntaxhighlight> etwa die Angabe der Programmiersprache mit lang=sprache: <syntaxhighlight lang=sprache>. Der Clou bei dieser Sache ist, dass für die Angaben innerhalb der geschweiften Klammern die Transclusion-Automatik von Wikis funktioniert.

Vorlagen mit Parametern[edit]

Parameter in Wiki-Vorlagen werden in dreifache geschweifte Klammern gesetzt, das schaut dann so aus: {{{1}}}

Standardwerte für Parameter werden bekanntlich nach einem senkrechten Strich eingetragen: {{{1|2017}}}. Das bedeutet, wenn ich die Vorlage ohne Übergabe eines Parameters aufrufe, wird 2017 überall dort eingesetzt, wo der Parameter {{{1}}} vorkommt.

In Kombination mit dem oben Gesagtem ergibt sich dann die eingangs vorgestellte kryptische Ansammlung von fünf aufeinanderfolgenden geschweiften rechten Klammern:

{{#tag:syntaxhighlight|{{{code|{{{1}}}}}}|lang="{{{lang|{{{2|text}}}}}}"}}

Leider werden die Klammern durch den Syntaxhighlighter nicht deutlicher eingefärbt.

Um auf mein anfangs erwähntes Beispiel zurück zu kommen. Das schaut mit #tag folgendermaßen aus:

== {{{y|{{CURRENTYEAR}}}}} {{{w|bei {{PAGENAME}} gekaufte }}}Artikel ==
<div style="column-count:{{{z|3}}};-moz-column-count:{{{z|3}}};-webkit-column-count:{{{z|3}}}">

{{#tag:dynamicpagelist|category = {{PAGENAME}}
category = {{{y|{{CURRENTYEAR}}}}}
namespace = main
ordermethod=sortkey
order  = ascending}}

Dabei ist zu beachten, dass der Inhalt genauso ausschauen muss wie ursprünglich eingegeben, also mit allen Zeilenumbrüchen.

Links[edit]

weitere interessante Extensions[edit]


Unterseiten
Links auf diese Seite
Alle Lilyuserin-Seiten