Ein guter Text erklärt Fachbegriffe. Ein langer Text mit vielen Erklärungen liest sich schwer. Ich habe deshalb eine Seite angelegt, auf der alle Fachbegriffe stehen: das Glossar. In den Beiträgen sind die wichtigen Begriffe fett gesetzt und mit dem Glossar verbunden.
Der erste Versuch war einfach: ein Klick auf den Begriff, und die Glossar-Seite öffnet sich. Beim Ausprobieren fiel mir etwas auf. Der Klick führt vom Beitrag weg. Wer zurückkehrt, sucht die Stelle, an der er gelesen hat. Das stört den Lesefluss.
Besser ist ein Popup: ein kleines Fenster, das über dem Text erscheint, die Erklärung zeigt und sich wieder schließt. Der Beitrag bleibt, wo er ist. Ein Link im Fenster führt bei Bedarf in einem neuen Tab zum ganzen Glossar.
Die Erklärungen sollen nur an einer Stelle stehen. Ändere ich einen Eintrag im Glossar, soll er überall stimmen. Das Popup holt sich den Text deshalb selbst. Beim ersten Klick lädt ein kleines Programm die Glossar-Seite im Hintergrund, sucht den Eintrag und zeigt ihn an. Es steckt in einem Must-Use-Plugin, einem Zusatz, der in WordPress automatisch läuft.
Ohne das Programm bleibt alles benutzbar. Dann ist der Begriff ein gewöhnlicher Link zur Glossar-Seite, genau wie beim ersten Versuch. Auch Strg-Klick und Mittelklick verhalten sich wie gewohnt.
Ergebnis: Ein Klick auf einen Begriff zeigt die Erklärung im Beitrag. Escape, ein Klick daneben oder die Schaltfläche „Schließen“ beenden das Popup. Gepflegt wird nur das Glossar.
Zeig mir, wie es geht: Das Must-Use-Plugin
- Datei
infra/mu-plugins/kisp-glossar-popup.php, installiert unter/data/terruhn.it/kisp/wordpress/wp-content/mu-plugins/:
install -o www-data -g www-data -m 644 /data/terruhn.it/CLAUDE/kisp/infra/mu-plugins/kisp-glossar-popup.php /data/terruhn.it/kisp/wordpress/wp-content/mu-plugins/kisp-glossar-popup.php
- Das Plugin gibt über
wp_footerein<style>und ein<script>inline aus. Es lädt nichts von außen und setzt keine Cookies. Der statische Export enthält beides. - Das Popup ist ein
<dialog>, geöffnet mitshowModal(). Escape, Fokusführung und Hintergrund liefert der Browser. Die Farben stammen von den SystemfarbenCanvasundCanvasText, deshalb passen Hell und Dunkel. - Der Handler greift bei Links, deren Pfad auf
/glossar/endet und die einen Anker tragen. Er lässt Strg-, Meta-, Umschalt-, Alt- und Mittelklick durch, ebenso Klicks auf der Glossar-Seite selbst und Klicks auf Links im Popup:
if (a.closest('dialog.kisp-glossar')) { return; }
- Die Glossar-Seite wird einmal mit
fetchgeladen, mitDOMParsergelesen und zwischengespeichert. Der Eintrag wird übergetElementByIdgefunden und als DOM-Knoten kopiert, nicht als Text ininnerHTML. Sprungmarken (span[id]) und dieiddes Absatzes werden entfernt, damit keine doppelten Anker entstehen. - Fällt etwas aus (Netzwerk, fehlender Eintrag, ältere Browser ohne
<dialog>), wird der normale Link benutzt. - Test: Beitrag öffnen, Begriff anklicken, Escape drücken, Strg-Klick prüfen, in der Konsole (F12) auf Fehler achten.
- Solange die Glossar-Seite ein Entwurf ist, zeigt das Popup sie nur eingeloggten Nutzern; Besucher fallen auf den Link zurück.