Block Editor Gallery-Block mit Lightbox ausstatten (WordPress/Gutenberg)

Mir gefällt der standardmäßig mitgelieferte Gallery-Block von Gutenberg sehr gut. So gut, dass ich eigentlich keinen Grund sehe, auf ein extra Gallery-Plugin zu setzte. Leider gibt es ein großes Manko: Standardmäßig wird keine Lightbox mitgeliefert. Die vielen schönen Bilder wollen die Besucher natürlich gerne im Vollbild anschauen und das ist sonst nur mit viel vor und zurück klicken möglich.

Update

Das Plugin steht jetzt in der WordPress.org Plugin Repository zum Download bereit:

Umsetzung

Zum Glück kann man eine Lightbox aber relativ einfach mit etwas JavaScript nachrüsten. Ich habe mich für BaguetteBox.js (Danke an René Hesse für den Tipp) entschieden. Keine Abhängigkeit von jQuery und nur 3,2kb gezipped groß!

Damit BaguettBox.js die Bilder in der Gallery in der Lightbox darstellt kann, reicht eine Zeile zusätzliches JavaScript aus:

baguetteBox.run('.wp-block-gallery');Code-Sprache: JavaScript (javascript)

Zusätzlich kann man auch noch die Bildbeschreibung abgreifen und in der Lightbox anzeigen lassen:

var options = {
	captions: function (element) {
		var figcaption = element.parentElement.getElementsByTagName('figcaption')[0];
		if (figcaption) {
			return figcaption.textContent;
		}
		return false;
	},
};
baguetteBox.run('.wp-block-gallery', options);Code-Sprache: JavaScript (javascript)

Wenn das Script async oder defer gelandet wird, z.B. weil ihr ein Plugin zur Performanceoptimierung wie WP Rocket nutzt, muss gewartet werden, bis alle Ressourcen inkl. BaguettBox.js vollständig geladen sind. Wartet einfach bis das load Event ausgelöst wird:

window.addEventListener('load', function() {
	var options = {
		captions: function (element) {
			var figcaption = element.parentElement.getElementsByTagName('figcaption')[0];
			if (figcaption) {
				return figcaption.textContent;
			}
			return false;
		},
	};
	baguetteBox.run('.wp-block-gallery', options);
});Code-Sprache: JavaScript (javascript)

Plugin downloaden

Ich habe das ganze in einem kleinen Plugin realisiert. Es registriert die zwei JavaScript- & CSS-Datein ein, lädt sie aber nur, wenn im Content der aktuellen Seite auch eine Guteberg Gallery gefunden worden ist.

Ihr könnt das Plugin in der offiziellen Plugin WordPress.org Plugin Repository herunterladen und in eurer WordPress-Installation hochladen & aktivieren:

Achtung

Es ist nur möglich die Lightbox anzuzeigen, wenn in Gutenberg bei der Gallery Link zur Medien-Datei ausgewählt ist. Sonst findet BaguetteBox.js keinen Link zur Bilddatei, die es in der Lightbox anzeigen lassen soll.

Gutenberg Gallery Link Medien Datei
Link zur Medien-Datei bei der Guteberg Gallery auswählen

In Aktion

Hier das Plugin in Aktion mit Bildern von meiner Reise nach Bali:

29 Reaktionen zu “Block Editor Gallery-Block mit Lightbox ausstatten (WordPress/Gutenberg)

  1. Super Tipp. Habe heute erstmals den Gallery-Block von Gutenberg verwendet und war verwundert, dass es da keine Lightbox-Funktionalität gibt. Mit dem von dir empfohlenen Script und der Anpassung für die großen Bilder war das jetzt allerdings in 5min nachrüsterbar. Danke! 🙂

  2. Hoy!
    Hab die selbe Idee.. allerdings funktioniert bei mir die Demo hier auf der Seite bereits nicht. Aktuelle Chrome, Windows 10.

    VG
    Nico

  3. Hallo, Klasse plugin!
    Ich habe es schon installiert und es funktioniert gut. Eine Frage habe ich allerdings: ist es moeglich das Plugin auch auf der ‚Posts‘ Seite laufen zu lassen, also wo die ganzen Posts entweder voll oder im Auszug gelistet sind? Das wuerde den Leuten sparen sich erst zu den individuellen Posts durchklicken zu muessen.

  4. Hallo Johannes, ich bin WP Neuling und habe die Baguette Box beim Static Site Generator ‚Nikola‘ lieben gelernt. Geht das auch für Einzelbilder? Der Gutenberg Editor ist ja auch sehr gewöhnungsbedürftig, besonders für Webneulinge (ich bin keiner mehr – eher die Kunden 😉 )
    Ich probier’s mal.
    Danke.

  5. Hallo Johannes, ich habe es gerade probiert, geht gut. Aber die Bildbeschreibung (in ‚Medien‘ eingetragen) nicht angezeigt… hmmm.
    Aber sonst toll.

    1. Hallo Thomas,

      gebe deinen Text mal bei Beschriftung ein. Wenn die Beschriftung auch so unter dem Bild angezeigt wird, sollte sie auch in der Lightbox angezeigt werden.

  6. Hi,

    vielen Dank, das funktioniert! Leider mit einer Ausnahme: Ich nutze das WP-Theme tewenty-seventeen (Onepager). Wenn ich über das Menü auf die Seite „Gallery“ gehe, funktioniert es einwandfrei. Wenn ich über die Startseite einfach runterscrolle zur „Gallery“, werden durch Anklicken einzelner Bilder einfach die jeweiligen Bilddateien geladen/ angezeigt.
    Gibt es dafür eine Lösung?
    Vielen Dank und beste Grüße
    Ole

    1. Du hast vermutlich den Gallery Block als Widget verwendet? Leider prüft die has_block( 'core/gallery' ) Funktion bisher nur Posts und nicht die Widgets. Ich überlege diese oder eine ähnliche Lösung zu implementieren: https://epiph.yt/blog/2021/has_block-fuer-block-widgets/ aber am liebsten wäre mir eine Funktion vom Core.

      Einen Workaround hätte ich hier für dich: https://wordpress.org/support/topic/unqueued-scripts-when-using-gallery-in-a-widget/

  7. Hi Johannes, funktioniert wunderbar! Vielen Dank! Bei mir sind die Buttons der Lightbox mit einer roten rechteckigen Outline hinterlegt, bei Hover werden die Rechtecke gefüllt, kann man das irgendwie deaktivieren?
    Vg Liz

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert