← Zurück zur Homepage

Handbuch

Alles was du wissen musst, um hebold.de zu verstehen, zu pflegen und weiterzuentwickeln. Keine technischen Vorkenntnisse nötig — die wichtigsten Dinge sind so einfach wie eine Textdatei bearbeiten.

Dateistruktur

Das Projekt besteht aus wenigen übersichtlichen Dateien:

hebold.de/
├── index.html ← Hauptseite (Homepage)
├── blog.html ← Blog (öffentlich, Zeitungs-Design)
├── blog_test.html ← Blog-Testseite (Zeitung als Hintergrund)
├── admin.html ← Blog-Editor (nur nach Login)
├── impressum.html ← Impressum (Adresse noch eintragen!)
├── datenschutz.html ← Datenschutzerklärung
├── handbuch.html ← Diese Datei
├── entwicklungsplan.html ← Roadmap & To-Dos
├── changelog.txt ← Versionshistorie
├── favicon.svg ← Goldenes "h" als Browser-Icon
├── robots.txt ← Suchmaschinen-Hinweise
├── .htaccess ← Options -Indexes (Strato)
├── .user.ini ← PHP-Einstellungen für Strato FastCGI
├── css/
│ └── style.css ← Alle Styles (index.html)
├── js/
│ ├── main.js ← Hotspot-Konfiguration & Logik
│ └── auth.js ← Login/Logout-Logik
├── api/
│ ├── login.php ← Anmeldung (POST)
│ ├── logout.php ← Abmeldung
│ ├── check.php ← Session-Status prüfen
│ ├── posts.php ← Blog-Artikel (CRUD)
│ ├── upload.php ← Bild-Upload für Editor
│ ├── users.php ← Benutzerverwaltung
│ ├── contact.php ← Kontaktformular (E-Mail)
│ └── setup.php ← Ersteinrichtung (einmalig)
├── config/
│ └── users.js ← Benutzerliste (editierbar)
├── data/
│ ├── posts.json ← Blog-Artikel (JSON)
│ └── .htaccess ← Deny from all
└── media/
├── startbild.png ← Schreibtisch-Bild (Homepage)
├── BlogZeitung.png ← Zeitungs-Bild (blog_test.html)
├── logo_hebold_de_f.png ← Logo (farbig)
├── logo_hebold_de_n.png ← Logo (Skizze)
└── uploads/ ← Blog-Bilder (vom Editor hochgeladen)

Konzept

Die Homepage zeigt ein Vollbild-Foto eines Schreibtisches. Auf verschiedenen Objekten dieses Schreibtisches sitzen interaktive Hotspots — leuchtende Punkte, die beim Hover ihr Label zeigen. Ein Klick öffnet ein Slide-in-Panel von rechts mit weiteren Informationen und Links.

Das Bild füllt immer den gesamten Bildschirm — egal ob 4K-Monitor, Laptop oder Tablet. Die Hotspots werden rechnerisch korrekt positioniert, sodass sie auch bei anderen Auflösungen exakt auf den Objekten sitzen.

Wichtig: Alle Inhalte (Texte, Links, Panel-Beschreibungen) werden direkt in js/main.js gepflegt — kein Backend, kein CMS, keine Datenbank nötig.

Wie funktionieren Hotspots?

Hotspots sind goldene, pulsierende Punkte auf dem Schreibtisch-Bild. Jeder Hotspot ist in der Datei js/main.js als ein Objekt im Array HOTSPOTS definiert.

Die Position wird in Prozent des Originalbildes angegeben (x von links, y von oben). Das JavaScript rechnet diese Werte bei jeder Bildschirmgröße neu in Pixel um.

Aktuelle Hotspots

ID Objekt Label Position (x / y)
maciMacProjekte50% / 38%
buecherBücherstapelLesen10% / 50%
stifteStiftehalterDesign20% / 70%
uhrTischuhrÜber mich65% / 64%
radioRadioMedien80% / 63%
becherCREATE-BecherKontakt88% / 64%
globusGlobusWelt74% / 50%
kerzeKerzeInspiration69% / 57%
skizzeSkizzenblockNotizen42% / 82%

Hotspot hinzufügen

Öffne js/main.js und füge im Array HOTSPOTS ein neues Objekt hinzu. Kopiere am besten einen bestehenden Eintrag und passe ihn an:

{
    id:         'stuhl',         // einmalige ID (keine Leerzeichen)
    x:          35,              // Position von links in % (0–100)
    y:          90,              // Position von oben in % (0–100)
    icon:       '🪑',            // Emoji für das Panel
    label:      'Lounge',        // Text im Hover-Label & Panel-Titel
    subtitle:   'Entspannung',   // Kleiner Text unter dem Titel
    labelBelow: false,           // true = Label erscheint unterhalb des Punktes
    content: {
        description: 'Ein Platz zum Durchatmen.',
        links: [
            { text: 'Mehr erfahren', href: '#' },
        ]
    }
},
Tipp: Um die richtige Position (x/y) zu ermitteln, öffne die Homepage im Browser, mache Rechtsklick → „Untersuchen" (DevTools), wähle das Bild aus und notiere die Mausposition relativ zur Bildgröße.

Hotspot entfernen

Öffne js/main.js und lösche einfach das gesamte Objekt aus dem HOTSPOTS-Array — von der öffnenden geschwungenen Klammer { bis zum schließenden }, (inklusive Komma).

Position eines Hotspots anpassen

Ändere in js/main.js die x- oder y-Werte des jeweiligen Hotspot-Objekts. Speichern → Browser neu laden → fertig.

x = Abstand vom linken Bildrand (0 = ganz links, 100 = ganz rechts)
y = Abstand vom oberen Bildrand (0 = ganz oben, 100 = ganz unten)

Panel-Inhalt ändern

Jeder Hotspot hat einen content-Block mit description (Fließtext) und links (Liste).

content: {
    description: 'Dieser Text erscheint im Panel.',
    links: [
        { text: 'Link-Text',      href: 'https://...' },
        { text: 'E-Mail',          href: 'mailto:du@example.de' },
        { text: 'Interner Anker',  href: '#abschnitt' },
    ]
}

Lege die neue Logo-Datei in den Ordner media/. Dann ändere in index.html den Pfad im <img>-Tag innerhalb .logo-header:

<img src="media/neues-logo.png" alt="hebold.de" class="logo-img">

Das Logo nutzt mix-blend-mode: multiply — das bedeutet: weißer Hintergrund wird transparent, farbige/dunkle Bereiche bleiben sichtbar. Das funktioniert nur korrekt wenn das Logo einen weißen (nicht transparenten) Hintergrund hat.

Startbild & Saisonale Bildwechsel

Das Startbild wird automatisch je nach Jahreszeit gewechselt. Die Bildpfade sind in js/season.js im Objekt SEASONS konfiguriert:

const SEASONS = {
    fruehling: { img: 'media/startbild.png',        ... },
    sommer:    { img: 'media/startbild_sommer.png',  ... },
    herbst:    { img: 'media/startbild_herbst.png',  ... },
    winter:    { img: 'media/startbild_winter.png',  ... },
};

Um ein Bild zu ersetzen: neue Datei in media/ ablegen und den Pfad in js/season.js anpassen. Der Season-Picker (nach Login sichtbar) erlaubt manuelles Umschalten zwischen den vier Jahreszeiten — die Wahl gilt nur für das eigene Gerät (localStorage).

Hinweis: Nach einem Bildwechsel müssen die Hotspot-Positionen (x/y-Werte in js/main.js) neu kalibriert werden, da sich die Objekte auf dem Bild verschoben haben.

Öffentliche Blog-Seite (blog.html)

Die Blog-Seite ist unter blog.html erreichbar und zeigt alle veröffentlichten Artikel im Zeitungs-Design. Entwürfe sind nur im Admin-Bereich sichtbar.

Das Layout ordnet Artikel automatisch:

ArtikelPosition
1. ArtikelHauptartikel, 2 Spalten breit (Titelgeschichte)
2.–3. ArtikelRechte Spalten (nebeneinander)
4+ ArtikelZweite Zeile, 4 gleichbreite Spalten

Klick auf einen Artikel öffnet den vollständigen Text im Overlay — ohne Seitenwechsel.

Artikel schreiben (admin.html)

Nur für eingeloggte Nutzer erreichbar. Den Link findet man im Header nach dem Anmelden.

AktionBeschreibung
Neuer ArtikelButton oben links — öffnet leeren Editor
SpeichernButton „Speichern" oder Ctrl+S
StatusEntwurf (nicht öffentlich) oder Veröffentlicht
Cover-BildURL eingeben oder Bild hochladen — erscheint als Header-Foto
LöschenIn der Artikel-Liste rechts neben jedem Eintrag
Tag/NachtSchalter oben rechts — wechselt Editor-Hintergrund
Hinweis: Der Admin-Bereich ist lokal (file://) nur eingeschränkt nutzbar — Artikel speichern erfordert den PHP-Server.

Bilder im Editor

TinyMCE bietet drei Wege für Bilder:

MethodeSo geht's
HochladenEinfügen → Bild → Datei hochladen — speichert in media/uploads/
URLEinfügen → Bild → URL eintragen (externe Bilder)
EinfügenBild aus Zwischenablage direkt in den Editor einfügen

Hochgeladene Bilder liegen in media/uploads/ auf dem Server. Erlaubte Formate: JPG, PNG, GIF, WebP. Maximalgröße: 8 MB.

Auf einem neuen Rechner einrichten

Das gesamte Projekt steckt in einem einzigen Ordner — einfach kopieren. Die statischen Seiten (index.html, blog.html etc.) funktionieren sofort im Browser ohne weitere Software. Für das Blog-Backend (Artikel laden, Bilder hochladen, Login) ist ein lokaler PHP-Server nötig.

Variante A — Nur anschauen (kein PHP)

Ordner kopieren → index.html im Browser öffnen. Alles außer dem Blog-Backend funktioniert. Blog-Artikel sind lokal nicht sichtbar (kein PHP), der Rest der Seite schon.

Variante B — Vollständig lokal (mit PHP)

Lokalen PHP-Server installieren, z.B.:

SoftwareSystemDownload
LaragonWindowslaragon.org — empfohlen, einfachste Einrichtung
XAMPPWindows / Macapachefriends.org
MAMPMacmamp.info
PHP Built-inallephp -S localhost:8080 im Projektordner

Projektordner in das Web-Root legen (z.B. C:\laragon\www\hebold.de\) → im Browser http://localhost/hebold.de/ aufrufen.

Ersteinrichtung nicht vergessen: Nach dem Einrichten einmalig http://localhost/hebold.de/api/setup.php aufrufen um den Admin-Benutzer anzulegen. Danach diese Datei vom Server löschen.

Dateien auf den Server laden (Strato)

Alle Dateien aus dem Projektordner per FTP oder Strato-Dateimanager hochladen. Folgende Verzeichnisse müssen auf dem Server schreibbar sein:

PfadWarum
data/posts.json wird von PHP geschrieben
media/uploads/Hochgeladene Bilder aus dem Editor

Wichtig für Strato: Die Datei .user.ini muss im Wurzelverzeichnis liegen (nicht löschen). Sie setzt PHP-Session-Sicherheitsoptionen für Strato's FastCGI-Betrieb. PHP-Einstellungen dürfen bei Strato nicht in .htaccess stehen.

Ersteinrichtung nach dem Upload

Nach dem ersten Server-Upload einmalig ausführen:

SchrittAktion
1https://hebold.de/api/setup.php im Browser aufrufen
2Admin-Benutzer wird angelegt (Passwort in config/users.js eintragbar)
3api/setup.php vom Server löschen — nur einmalig nötig
4Unter https://hebold.de/admin.html einloggen und ersten Artikel schreiben
Benutzerverwaltung: Passwörter und Benutzer werden in config/users.js gespeichert. Diese Datei ist bewusst einfach gehalten — für eine produktive Website empfiehlt sich langfristig ein serverseitiges Passwort-Hashing.

CSS-Variablen (Farben & Design)

Alle Designfarben sind in css/style.css als Variablen am Anfang der Datei definiert:

VariableWertVerwendung
--gold#c9a84cHotspot-Farbe, Akzente
--gold-light#e8c97eHover-Zustände
--panel-bgrgba(20,16,10,0.92)Panel-Hintergrund
--panel-borderrgba(201,168,76,0.25)Panel-Rahmen
--text-primary#f0ead8Haupttext
--text-muted#a09070Fließtext, Labels

Tastaturkürzel

TasteAktion
ESCGeöffnetes Panel schließen

Impressum & Datenschutz

Beide Seiten liegen als eigenständige HTML-Dateien vor und sind im Footer der Homepage verlinkt. Vor dem Launch bitte ausfüllen:

Was noch eingetragen werden muss

DateiWas fehlt
impressum.htmlStraße, PLZ, Ort — ggf. Telefon
datenschutz.htmlGleiche Adresse wie im Impressum

Cookie-Hinweis

Der Cookie-Hinweis erscheint beim ersten Besuch als schmale Leiste. Nach Klick auf „OK" wird er via localStorage dauerhaft weggeklickt. Er enthält einen Link zur Datenschutzerklärung.

Da ausschließlich technisch notwendige Cookies (PHP-Session nach Login) und Google Fonts verwendet werden, ist keine aktive Einwilligung erforderlich — der Hinweis reicht aus.

Favicon & robots.txt

Favicon

Das Favicon (favicon.svg) zeigt ein goldenes „h" auf dunklem Grund. Es wird in alle HTML-Dateien über folgenden Tag eingebunden:

<link rel="icon" type="image/svg+xml" href="favicon.svg">

Für bessere Browser-Kompatibilität empfiehlt sich zusätzlich eine favicon.ico Datei (32×32px) — z.B. mit realfavicongenerator.net erstellen.

robots.txt

Die robots.txt im Wurzelverzeichnis sperrt Suchmaschinen aus den internen Ordnern aus:

Disallow: /api/
Disallow: /data/
Disallow: /config/