Galerie mit Benutzerlink

From ProWiki - Demo and Test Wiki

This is the latest revision of this page; it has no approved revision.

Eine Galerie, deren Fotos auf die Benutzerseite verlinken statt auf die Dateiseite. Der Parameter dafür heißt redirects und ist kaum bekannt.

Versionshinweis. redirects setzt eine SRF-Version voraus, die neuer ist als 5.2.0. In 5.2.0 sucht das zugehörige Skript den Bildlink noch über die inzwischen entfallene CSS-Klasse a.image und ersetzt deshalb jede Kachel durch die Meldung „Das Bild wurde nicht gefunden“. Das Problem wurde inzwischen gelöst, indes noch nicht veröffentlicht. (PR 977, 17.04.2026). Dieses Wiki läuft noch auf 5.2.0, die Galerie unten zeigt also vorerst genau diese Meldung. Sobald das Release eingespielt ist, stimmt die Seite von selbst.

Wie es funktioniert

SRF schreibt das Sprungziel serverseitig in das alt-Attribut des Vorschaubilds und hängt der Galerie die CSS-Klasse srf-redirect an. Das Modul ext.srf.gallery.redirect tauscht anschließend im Browser die Links der Vorschaubilder aus.

Die Abfrage

{{#ask: [[Category:Mitarbeiter]] [[Hat Profilbild::+]]
 |?Hat Profilbild
 |?Hat Benutzerseite=Benutzerseite
 |mainlabel=Person
 |format=gallery
 |imageproperty=Hat Profilbild
 |captionproperty=-
 |redirects=Benutzerseite
 |widths=100
 |heights=125
 |limit=300
}}

Ergebnis

Die Attribute

Beide brauchen Datentyp Seite, sonst sammelt SRF sie nicht ein.

Fallstricke

  • Das Label des Bild-Printouts darf nicht leer sein. |?Hat Profilbild= setzt ein leeres Label, und imageproperty findet dann keinen passenden Printout. Ohne redirects weicht SRF auf einen anderen Codepfad aus und die Galerie sieht trotzdem richtig aus, der Fehler fällt also nicht auf. Sobald redirects dazukommt, greift der Printout-Pfad und die Galerie bleibt komplett leer, ohne jede Meldung. Also |?Hat Profilbild ohne Gleichheitszeichen schreiben.
  • captionproperty und redirects dürfen nicht dieselbe Quelle haben. Beide auf - gesetzt heißt: die Bildunterschrift gewinnt, das alt-Attribut bleibt leer und der Sprung fällt still aus. Hier steht deshalb captionproperty=- für den Personennamen und redirects=Benutzerseite für das Sprungziel.
  • captionproperty=- ersetzt |?=. Ohne das stehen plötzlich Dateinamen unter den Fotos statt der Personennamen.
  • Ein API-Aufruf pro Bild. Für ein Sprungziel vom Typ Seite holt das Skript die URL einzeln je Bild über die API und legt sie im localStorage ab. Beim ersten Seitenaufruf bedeutet limit=300 also bis zu 300 Requests. Ist das Sprungziel vom Typ URL, wird der Wert direkt gesetzt und es fällt kein Request an.
  • overlay schaltet redirects ab. Die beiden schließen sich gegenseitig aus.
  • Ohne JavaScript bleibt es beim Link auf die Dateiseite.

Variante: Sprung auf die Seite des Suchtreffers

Wenn das Ziel die Mitarbeiterseite selbst ist und nicht eine separate Benutzerseite, braucht es kein zusätzliches Attribut. redirects=- verweist auf das Subjekt des Treffers. Dann darf captionproperty aber nicht ebenfalls - sein.

Variante ohne Wartezeit auf das Release

Dieselbe Galerie lässt sich auch vollständig serverseitig bauen, über format=template und den link=-Parameter der Bildeinbindung. Das kommt ohne redirects, ohne JavaScript und ohne die API-Aufrufe aus und funktioniert daher auch auf 5.2.0. Die Vorlagen dazu liegen unter Template:Kollegium Anfang, Template:Kollegium Kachel und Template:Kollegium Ende.

Testdaten

MitarbeiterProfilbildBenutzerseite
Mitarbeiter Anna BeispielKarsten
Mitarbeiter Bernd BeispielUser Jeroen
Mitarbeiter Clara BeispielAlistair