Hilfe

In internen Diskussionen im Wikinewsprojekt taucht immer wieder die Abkürzung „DPL“ auf. Diese Hilfeseite soll einige Hinweise zur Verwendung der dahinter stehenden Technik geben und so dazu beitragen, dass die Benutzer von Wikinews bestimmte Zusammenhänge besser nachvollziehen können und die DPL-Technik für eigene Zwecke auch benutzen können.

Dabei geht es vor allem um die Nutzung von DPL bei Wikinews (deutschsprachige Ausgabe). Die Hilfe-Seite hat einführenden Charakter. Vertiefende Informationen zur Programmierung sind bei Media-Wiki zu finden: DynamicPageList.

Was ist DPL?

Bearbeiten
DPL bedeutet „Dynamic Page Listing“, also auf Deutsch etwa „Dynamische Auflistung von Seiten“.
  • Was ist daran dynamisch? Im Unterschied zum Newsticker der Hauptseite, wo alle Artikel von Hand eingefügt und mit einem zusammenfassenden Text (Teaser) versehen und gespeichert werden müssen, funktioniert eine Seite mit DPL anders. Die Liste, die der Benutzer beim Aufrufen der Seite zu Gesicht bekommt, wird erst im Moment des Aufrufs erstellt, daher ist sie im Normalfall auch aktuell. Wenn man die Seite über die Bearbeiten-Funktion öffnet, sieht man keine Listen, sondern nur den kurzen Programmiercode der „DP-Liste“.
  • Die gestellte Frage lässt sich auch so beantworten: DPL ist eine kleine Suchmaschine, die die Kategorien von Wikinews nach Artikeln durchsucht und ausgibt.
  • Programmiertechnisch gesprochen: DPL ist eine Software-Erweiterung von MediaWiki.

Wozu wird DPL bei Wikinews benutzt?

Bearbeiten

Die Softwareerweiterung DPL wird hauptsächlich zur Darstellung von Artikellisten in Portalen benutzt. Weiterhin wird DPL in der Artikelschmiede benutzt, um dort die Artikel aufzulisten, die sich gerade in der Entstehung befinden oder bearbeitet werden und so weiter.

Wie funktioniert DPL?

Bearbeiten

DPL ist eine Programmierschleife mit folgendem Grundaufbau:

<DynamicPageList>
...Parameter...
</DynamicPageList>

Als Parameter können verschiedene Ausdrücke eingebracht werden. Wichtig für uns ist, dass wir damit verschiedene Kategorien abfragen können.

Beispiel: eine Kategorie

Bearbeiten
Codebeispiel eine Kategorie
<DynamicPageList>
category=Artikelstatus: Im Entstehen
count=5
</DynamicPageList>

Mit count=5 wird die Anzahl der ausgegebenen Artikel auf fünf beschränkt. Als Kategorie wurden Artikel ausgewählt, die in der Entstehung sind.

Ergebnis


Um mal bei dem Beispiel hier zu bleiben: Wie kommen die Artikel zu der Kategorie:Artikelstatus: Im Entstehen? Diese Kategorie wurde den Artikeln in dem Moment zugewiesen, in dem die entsprechende Vorlage eingesetzt wurde, in diesem Fall die Vorlage:Im Entstehen.

Beispiel: zwei Kategorien

Bearbeiten

Im Portal:Iranisches Atomprogramm werden zwei Kategorien benutzt, um eine Artikelliste zu erstellen, die sowohl die Kategorie:Kernenergie als auch die Kategorie:Politik im Iran enthalten.

Codebeispiel
<DynamicPageList>
category=Kernenergie
category=Politik im Iran
count=3
</DynamicPageList>
Ergebnis


Zusätzliche Parameter

Bearbeiten

Um die Ausgabe zu begrenzen, habe ich die Möglichkeit, weitere Parameter einzufügen.

Parameter „namespace“
namespace=0

begrenzt die Ausgabe auf den Artikelnamensraum. 0 steht für den Artikelnamensraum, 1 für den Namensraum „Diskussion“ und so weiter. Eine Auflistung aller Namensräume findest du hier: Hilfe:Namensräume.

Es ist auch möglich den Namensraum durch die korrekte Namensraumbezeichnung anzugeben. Also statt „namespace=0“ kann man auch schreiben: „namespace=(Haupt-)“

Parameter „notcategory“

Dieser Parameter stellt praktisch eine Umkehrung des Kategorieparameters dar. Dadurch lassen sich Artikel herausfiltern, die über eine bestimmte Kategorie verfügen. Will ich beispielsweise verhindern, dass Artikel ausgegeben werden, die sich in der Löschdiskussion befinden, so setze ich folgende Zeile in die DPL-Schleife:

notcategory=Löschkandidat

Einen Sinn hat das natürlich erst, wenn ich auch andere Kategorien abfrage. Ein Beispiel aus dem Portal:Luftfahrt:

Codebeispiel
<DynamicPageList>
category=Luftfahrt allg.
notcategory=Löschkandidat
namespace=0
count=5
</DynamicPageList>
Ergebnis


Parameter suppresserrors

DPL liefert eine eigene Fehlermeldung, wenn keine Artikel gefunden wurden: „DynamicPageList: No results!“ Um diese Fehlermeldung zu unterdrücken, wird der Parameter suppresserrors eingefügt. Das kann sinnvoll sein, wenn in Portalen bestimmte Kategorien leer sind und keine Fehlermeldung sichtbar werden soll.

suppresserrors=true

Kategorie:Unveröffentlicht

Bearbeiten

Mit dieser Kategorie hat es eine besondere Bewandtnis. Sie erschließt sich aus der Frage:

Wie kann ich in Portalen sicherstellen, dass keine unfertigen Artikel dort auftauchen?

Solange ein Artikel nicht fertig ist, führt er die Kategorie:Unveröffentlicht mit sich. Diese Kategorie gelangt über eine Vorlage hinein: die Vorlage:Im Entstehen, diese setzt dann ebenfalls die Kategorie:Unveröffentlicht in den Artikel. In Portalen kann ich folglich diese Kategorie benutzen, um Artikel auszufiltern, denen die Kategorie:Unveröffentlicht zugeordnet ist. Das sieht dann so aus:

Codebeispiel aus dem Portal:Luftfahrt (allgemeiner Teil)
<DynamicPageList>
category=Luftfahrt allg.
notcategory=Löschkandidat
notcategory=Unveröffentlicht
addfirstcategorydate=true
namespace=0
count=5
</DynamicPageList>
Ergebnis


Ausgabe mit Datum

Bearbeiten

Im letzten Beispiel tauchte bereits der Parameter „addfirstcategorydate“ auf. Was bewirkt dieser (optionale) Parameter?

Dieser Parameter setzt das Datum vor den Namen des Artikels. Dabei wird dasjenige Datum zugrunde gelegt, an dem die erste in der DPL-Schleife genannte Kategorie in den Artikel eingefügt wurde. Wenn dazu die Kategorie:Veröffentlicht benutzt wird, bewirkt der Parameter, dass die Artikel mit dem Datum ihrer Veröffentlichung in der Liste auftauchen. Als wir diese Kategorie noch nicht benutzt haben, änderte sich jedes Mal, wenn eine neue Kategorie in einen Artikel hineinkam, das Datum in den DP-Listen in den Portalen, was sehr unschön war. Deshalb ist es so wichtig, dass die Kategorie:Veröffentlicht bei der Veröffentlichung auf der Hauptseite in den Artikel eingesetzt wird (und auch bei Einsprüchen dort bleibt). Weitere Informationen zur Veröffentlichung gibt es auf der Hilfeseite:Veröffentlichung. Wenn ich verhindern will, dass das Datum erscheint, lasse ich den Parameter einfach weg. Die Grundeinstellung ist addfirstcategorydate=false.

Code-Beispiel aus dem Portal:Recht
<DynamicPageList>
category=Veröffentlicht
category=Themenportal Recht
notcategory=Löschkandidat
notcategory=Unveröffentlicht
addfirstcategorydate=false
namespace=0
count=5
</DynamicPageList>

Dieser Code gibt eine Liste von fünf Artikeln aus, die veröffentlicht sind (Kategorie:Veröffentlicht) und die Kategorie:Themenportal Recht enthalten. Herausgefiltert werden dabei Artikel, die die Kategorie:Löschkandidat und die Kategorie:Unveröffentlicht enthalten. Am Schluss wird noch festgelegt, dass nur Artikel aus dem (Haupt-)Namensraum 0 (Artikelsnamensraum) ausgewählt werden.

Ergebnis (ohne Datum)