Files
Hugo_MAP-NSU-Komplex/README.md
T
2026-08-18 18:03:39 +02:00

4.3 KiB
Raw Blame History

Offener Prozess Interaktive Karte (Hugo)

Hugo-Neubau von map.offener-prozess.de (Ablösung des alten WordPress/Listable-Setups). Interaktive Karte der Schauplätze des NSU-Komplexes mit Leaflet + OpenStreetMap (statt der alten Google-Maps-/Mapbox-Einbindung), im Layout ans Original angelehnt (Split-View: Kartenliste links, Karte rechts), umgesetzt mit dem Theme themes/op-dz/ (UIkit 3, Schrift ABC Favorit, alle Assets lokal/DSGVO-konform).

Starten

hugo server            # Vorschau: http://localhost:1313
hugo --gc --minify     # Produktions-Build nach ./public

Voraussetzung: Hugo Extended ≥ 0.116.

Inhalt

118 Schauplätze wurden von der Altseite importiert (112 mit Koordinaten, 6 ohne erscheinen als Cards, aber nicht als Marker), verteilt auf 18 Kategorien (Mordanschläge, Raubüberfälle, Aufenthaltsorte, Wohnungen des Trios, Fanzines, Unterstützende, Behörden …). Texte, Adressen, Koordinaten, Quellen und Bilder stammen von map.offener-prozess.de.

Struktur

hugo.toml                 Konfiguration: Taxonomie, Menüs, Kartenkacheln, Params
data/kategorien.yaml      Kategorie → Markerfarbe (Reihenfolge = Filter-Reihenfolge)
content/
  _index.md               Startseite (= Karten-Explorer)
  schauplaetze/<slug>/     je Schauplatz ein Page-Bundle (index.md + optional cover.*)
  so-funktionierts.md, ueber.md
layouts/index.html         Startseite → Explorer-Partial
themes/op-dz/
  layouts/partials/
    explorer.html          Split-View (Liste + Suche + Filter + Karte)
    karte.html             Karten-Container + eingebettete Marker-Daten (JSON)
    schauplatz-card.html   gelbe Card (mit data-Attributen für JS-Filter)
  layouts/schauplaetze/    list.html (Explorer) + single.html (Detail mit Sidebar)
  layouts/_default/term.html  Kategorie-Seite (gefilterter Explorer)
  assets/js/map.js         Leaflet: Cluster, Kategorie-Filter, Textsuche, Card↔Marker
  static/vendor/            leaflet, markercluster, uikit (alle lokal)

Einen Schauplatz anlegen

Neuer Ordner content/schauplaetze/<slug>/index.md:

---
title: "Titel"
subtitle: "Namen / Kurzkontext"
date: 2004-02-25
kategorien: ["Mordanschläge"]      # muss zu data/kategorien.yaml passen
lat: 54.1104949
lng: 12.1544098
address: "Straße Nr, PLZ Ort"
datum: "25.02.2004"                 # optionales Anzeige-Datum in der Sidebar
quelle: "Quellenangabe"
featured: true                     # optional → „Tipp!"-Markierung
---

Fließtext …

Der Punkt erscheint automatisch auf allen Karten (Start, Kategorie) und bekommt eine Detailseite mit Mini-Karte + „Anfahrt per OpenStreetMap". Ein Bild cover.jpg im selben Ordner wird als Card-/Kopfbild genutzt.

Karte / Kacheln

Standard: OpenStreetMap. Eigener Tile-Server (OSM-Usage-Policy!) in hugo.toml unter [params.map] (tileURL, attribution). 118 Marker werden per Leaflet.markercluster gebündelt; Farbe = Kategorie (data/kategorien.yaml).

Externe Quellen

Die quelle-Angabe eines Schauplatzes wird auf der Detailseite unter „Externe Quellen" ausgegeben; enthaltene URLs werden automatisch zu anklickbaren Links (öffnen in neuem Tab, rel="noopener") — umgesetzt über das Partial themes/op-dz/layouts/partials/linkify.html.

Kiosk-Modus

Für den Ausstellungs-/Terminalbetrieb lässt sich die Seite über einen URL-Parameter „verriegeln":

?kiosk=true     Kiosk-Modus aktivieren  (auch ?kiosk=1)
?kiosk=false    Kiosk-Modus verlassen   (auch ?kiosk=0)

Ist der Modus aktiv, werden externe Links (anderer Host) sowie mailto:/tel:-Links unklickbar gemacht — der Linktext bleibt lesbar, wirkt aber wie normaler Fließtext. Die interne Navigation bleibt erhalten, damit Karte und Schauplätze weiter erkundet werden können.

Der Modus wird beim ersten Aufruf mit ?kiosk=true gesetzt und bleibt für die gesamte Browser-Session aktiv (auch beim Weiterklicken ohne den Parameter); verlassen wird er mit ?kiosk=false. Logik: assets/js/kiosk.js (global auf allen Seiten geladen).

Erneut importieren

Der Import-Script (WP-Job-Manager-AJAX jm-ajax/get_listings/ + Detailseiten) liegt unter scratchpad/import.py. Erneut ausführbar, überschreibt die Bundles unter content/schauplaetze/ (das _index.md bleibt).