HSK-Vorlage aus der Olzinger-Website ableiten

Firmendaten durch Platzhalter ersetzt (Mustermann Haustechnik GmbH,
Musterstraße 1, 12345 Musterstadt, 01234 567890, example.com), Design
und Funktionen unverändert.

- Feiertage im Öffnungsstatus per BUNDESLAND (alle 16 Länder) statt fest Bayern
- Datenschutz: Aufsichtsbehörde als TODO je Bundesland
- Skript-Namensraum olz -> hsk, Logo-SVG und OG-Bild neu
- .webklar-preview.json von Olzinger entfernt (sonst Deploy auf olzinger)
- .gitea/template: neue Repos aus der Vorlage erben die Preview-Datei nicht
- README: Anleitung für neue HSK-Seiten, Platzhalter-Tabelle, Checkliste

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Claude committed 2026-10-04 19:10:17 +00:00
1 parent ad155124b1
commit 8da5102333
21 files changed
+238 -180

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
# Gitea-Vorlage: gilt nur beim „Repository aus Vorlage erstellen“.
# Gitea entfernt diese Datei im neuen Repo.
[exclude]
# Preview-Einstellung der Vorlage selbst (Subdomain hsk-vorlage) nicht mitkopieren –
# das neue Projekt bekommt seine eigene über WOMS („Preview einschalten“).
.webklar-preview.json
+1 -1
View File
@@ -1,4 +1,4 @@
# Olzinger Haustechnik – Apache-Konfiguration (optional) # HSK-Vorlage – Apache-Konfiguration (optional)
# Alle Blöcke sind abgesichert, damit fehlende Module keinen Serverfehler auslösen. # Alle Blöcke sind abgesichert, damit fehlende Module keinen Serverfehler auslösen.
ErrorDocument 404 /404.html ErrorDocument 404 /404.html
-11
View File
@@ -1,11 +0,0 @@
{
"enabled": true,
"type": "static",
"branch": "main",
"displayName": "Olzinger",
"templateName": "webklar-preview-template",
"projectType": "preview",
"public": false,
"template": false,
"subdomain": "olzinger"
}
+5 -5
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Seite nicht gefunden – Olzinger Haustechnik</title> <title>Seite nicht gefunden – Mustermann Haustechnik</title>
<meta name="robots" content="noindex"> <meta name="robots" content="noindex">
<meta name="theme-color" content="#0B151E"> <meta name="theme-color" content="#0B151E">
<!-- Absolute Pfade, damit die Seite auch bei verschachtelten URLs korrekt lädt --> <!-- Absolute Pfade, damit die Seite auch bei verschachtelten URLs korrekt lädt -->
@@ -32,15 +32,15 @@
<body> <body>
<div class="e404"> <div class="e404">
<header class="e404__top"> <header class="e404__top">
<a class="logo" href="/" aria-label="Olzinger Haustechnik – zur Startseite"> <a class="logo" href="/" aria-label="Mustermann Haustechnik – zur Startseite">
<svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true"> <svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true">
<defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs> <defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs>
<path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/> <path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/>
<circle cx="20" cy="20" r="3.4" fill="currentColor"/> <circle cx="20" cy="20" r="3.4" fill="currentColor"/>
</svg> </svg>
<span class="logo__text"><span class="logo__word">Olzinger</span><span class="logo__sub">Haustechnik</span></span> <span class="logo__text"><span class="logo__word">Mustermann</span><span class="logo__sub">Haustechnik</span></span>
</a> </a>
<a class="btn btn--sm btn--warm" href="tel:+4987172617"><span class="btn__label">0871&nbsp;72617</span></a> <a class="btn btn--sm btn--warm" href="tel:+491234567890"><span class="btn__label">01234&nbsp;567890</span></a>
</header> </header>
<main class="e404__main" id="main"> <main class="e404__main" id="main">
@@ -88,7 +88,7 @@
</svg> </svg>
</main> </main>
<footer class="e404__foot">© Olzinger GmbH · Ahornstraße 112 · 84030 Ergolding · <a href="/impressum.html">Impressum</a> · <a href="/datenschutz.html">Datenschutz</a></footer> <footer class="e404__foot">© Mustermann Haustechnik GmbH · Musterstraße 1 · 12345 Musterstadt · <a href="/impressum.html">Impressum</a> · <a href="/datenschutz.html">Datenschutz</a></footer>
</div> </div>
</body> </body>
</html> </html>
+50 -15
View File
@@ -1,9 +1,52 @@
# Olzinger Haustechnik – Website # HSK-Vorlage – Website für Heizung · Sanitär · Klima
Maßgeschneiderter Neuauftritt für die **Olzinger GmbH** (Heizung · Sanitär · Lüftung · Regenerative Energien, Ergolding bei Landshut, seit 1985). Vorlage für Websites von **HSK-/SHK-Betrieben** (Heizung, Sanitär, Lüftung/Klima, regenerative Energien). Entstanden aus der Website für Olzinger Haustechnik (`WEBklar/Olzinger`). Alle Firmendaten sind hier durch **Platzhalter** ersetzt („Mustermann Haustechnik GmbH“, „Musterstadt“, `example.com`).
Statische Website ohne Build-Schritt: HTML, CSS und JavaScript ohne Bibliotheken, Schrift lokal eingebunden (kein CDN, keine Cookies, kein Tracking). Statische Website ohne Build-Schritt: HTML, CSS und JavaScript ohne Bibliotheken, Schrift lokal eingebunden (kein CDN, keine Cookies, kein Tracking).
## Neue HSK-Seite aus der Vorlage anlegen
1. In Gitea bei `WEBklar/HSK-Vorlage` auf **„Diese Vorlage verwenden“** klicken. Besitzer: `WEBklar`, Name: z. B. `Mueller-Haustechnik`. Haken bei **„Git-Inhalt (Standardbranch)“** setzen.
- Gitea lässt dabei `.webklar-preview.json` weg (siehe `.gitea/template`). Das neue Repo bekommt also **nicht** die Preview der Vorlage.
- Wird stattdessen per `git clone` kopiert: `.webklar-preview.json` **vor dem ersten Push löschen**. Sonst landet die neue Seite auf `hsk-vorlage.project.webklar.com` und überschreibt die Vorlage.
2. Im WOMS das Projekt dem Ticket bzw. Kunden zuordnen und **„Preview einschalten“** wählen.
3. Platzhalter ersetzen (Tabelle unten), Texte anpassen und die Checkliste abarbeiten.
## Platzhalter
Am schnellsten per Suchen & Ersetzen über alle Dateien. Danach nach `Mustermann`, `Musterstadt`, `example.com`, `12345`, `01234` und `TODO` suchen. Es darf nichts übrig bleiben.
| Platzhalter | Bedeutung | Vorkommen |
|---|---|---|
| `Mustermann Haustechnik GmbH` | Firmenname mit Rechtsform | Footer, Impressum, Datenschutz, 404, Schema.org, `kontakt.php` |
| `Mustermann Haustechnik` | Kurzname für Titel und Logo-Beschriftung | `<title>`, Open Graph, `site.webmanifest` |
| `Mustermann` (Logo-Wort) / `Haustechnik` (Zusatz) | Logo-Schriftzug | `logo__word` / `logo__sub` in allen HTML-Dateien, `assets/img/logo.svg` (`MUSTERMANN`), `tools/og-template.html` |
| `Musterstraße 1`, `12345 Musterstadt` | Anschrift | Hero, Kontakt, Footer, Impressum, Datenschutz, 404, Schema.org, Google-Maps-Link |
| `Musterstadt und Umgebung` | Einzugsgebiet | Meta-Description, Open Graph, Schema.org (`areaServed`) |
| `01234 567890` / `+491234567890` | Telefon (Anzeige / `tel:`-Link) | Navigation, Menü, Hero, Kundendienst-Karte, Kontakt, Footer, Impressum, Datenschutz, 404 |
| `01234 567891` | Fax | Footer, Impressum, Schema.org |
| `kontakt@example.com` | E-Mail | Kontakt, Karriere-Links, Footer, Impressum, Datenschutz, `kontakt.php`, `assets/js/contact.js` |
| `www.example.com` | Domain | `canonical`, Open Graph, Schema.org, `sitemap.xml`, `robots.txt`, `kontakt.php`, `tools/og-template.html` |
| `1990` / `Max Mustermann` | Gründungsjahr / Gründer | Hero, „Über uns“, Chronik, Schema.org, `assets/js/main.js` (`nowYear - 1990`) |
| `2015` / `Erika Mustermann` | Chronik-Eintrag / Geschäftsführung | Chronik, Impressum, Datenschutz |
| `Rund 20 Fachleute` / `"value": 20` | Mitarbeiterzahl | „Über uns“, Schema.org |
| `Amtsgericht Musterstadt`, `HRB 12345` | Handelsregister | Impressum |
## Vor dem Livegang prüfen
- [ ] **Firmendaten** vollständig ersetzt (Suche siehe oben).
- [ ] **Bundesland** für die Feiertage im Öffnungsstatus: `BUNDESLAND` oben in `assets/js/contact.js` (Standard `BY`). Dazu `addressRegion` in den Schema.org-Daten von `index.html`.
- [ ] **Öffnungszeiten:** `SCHEDULE` in `assets/js/contact.js`, die Texte in allen HTML-Dateien (Status-Zeile, Kontaktbereich, Footer) und `openingHoursSpecification` in `index.html`.
- [ ] **Leistungen:** Die 5 Karten, die Formular-Themen und `knowsAbout` (Schema.org) an das Angebot des Betriebs anpassen. Bei weniger Karten den Zähler `/ 5` in `index.html` anpassen.
- [ ] **Über uns und Karriere:** Chronik, Mitarbeiterzahl, Ausbildungsberufe, Startmonat.
- [ ] **Impressum:** Geschäftsführung, Registereintrag, Umsatzsteuer-ID und berufsrechtliche Angaben (Kammer, Berufsbezeichnung). Die letzten beiden sind als Kommentar in `impressum.html` vorbereitet.
- [ ] **Datenschutz:** Hosting-Anbieter, Speicherdauer der Server-Logs, Vertrag zur Auftragsverarbeitung, zuständige Aufsichtsbehörde (Abschnitt 9). Alles als `TODO` markiert. Rechtstexte sind Entwürfe und ersetzen keine Rechtsberatung.
- [ ] **Formular:** In `kontakt.php` Empfänger/Absender prüfen (`RECIPIENT`, `SENDER`) und einmal testweise absenden.
- [ ] **Logo und Farben:** Für ein eigenes Logo die Logo-Marke (Thermostat-Bogen, `logo__mark`) in den HTML-Dateien, `assets/img/logo.svg`, die Favicons und `tools/og-template.html` ersetzen. Die Farben stehen als Design-Tokens am Anfang von `assets/css/main.css`.
- [ ] **Open-Graph-Bild** neu rendern (siehe „Anpassen“). Das Bild enthält Name, Ort und Domain.
- [ ] `sitemap.xml`: `lastmod` aktualisieren.
- [ ] Optional: echte Fotos (Team, Projekte, Bäder) ergänzen. Die Illustrationen tragen die Seite auch ohne Fotos.
## Gestaltungsidee: „Wärmebild“ ## Gestaltungsidee: „Wärmebild“
Haustechnik sieht man nicht – man spürt sie. Deshalb zeigt der Einstieg ein ruhiges, live berechnetes **Wärmebild** (WebGL) mit Isothermen wie bei einer Thermografie-Kamera. Eine langsam wandernde Wärmequelle hält das Bild in Bewegung – ohne Maus- oder Touch-Effekte. Durch die Seite zieht sich das Motiv **warm trifft kalt** (Vorlauf/Rücklauf): Farbverlauf Blau → Magenta → Orange, das Logo als Thermostat-Skala. Haustechnik sieht man nicht – man spürt sie. Deshalb zeigt der Einstieg ein ruhiges, live berechnetes **Wärmebild** (WebGL) mit Isothermen wie bei einer Thermografie-Kamera. Eine langsam wandernde Wärmequelle hält das Bild in Bewegung – ohne Maus- oder Touch-Effekte. Durch die Seite zieht sich das Motiv **warm trifft kalt** (Vorlauf/Rücklauf): Farbverlauf Blau → Magenta → Orange, das Logo als Thermostat-Skala.
@@ -14,11 +57,11 @@ Grundsatz: wenig Text, wenig Bewegung, gut bedienbar am Handy.
| Bereich | Besonderheit | | Bereich | Besonderheit |
|---|---| |---|---|
| Hero | Ruhiges WebGL-Wärmebild, Live-Öffnungsstatus (inkl. bayerischer Feiertage), Anfrage- und Telefon-Button | | Hero | Ruhiges WebGL-Wärmebild, Live-Öffnungsstatus (inkl. Feiertage des Bundeslands), Anfrage- und Telefon-Button |
| Leistungen | 5 Karten mit Illustrationen; am Desktop als Kartenstapel, unter 900 px wischbare Karten mit Zähler (1 / 5) und Pfeilen | | Leistungen | 5 Karten mit Illustrationen; am Desktop als Kartenstapel, unter 900 px wischbare Karten mit Zähler (1 / 5) und Pfeilen |
| Energie-Haus | Hausschnitt: Wärmepumpe, Solarthermie, Speicher, Fußbodenheizung, Bad, Lüftung – der gewählte Kreislauf wird hervorgehoben | | Energie-Haus | Hausschnitt: Wärmepumpe, Solarthermie, Speicher, Fußbodenheizung, Bad, Lüftung – der gewählte Kreislauf wird hervorgehoben |
| Heizungs-Finder | 4 Fragen → Empfehlung (Wärmepumpe / Pellets / Hybrid); Ergebnis lässt sich ins Kontaktformular übernehmen | | Heizungs-Finder | 4 Fragen → Empfehlung (Wärmepumpe / Pellets / Hybrid); Ergebnis lässt sich ins Kontaktformular übernehmen |
| Über uns | Kurze Chronik 1985 → heute | | Über uns | Kurze Chronik vom Gründungsjahr bis heute |
| Karriere | Ausbildung Anlagenmechaniker SHK, Initiativbewerbung | | Karriere | Ausbildung Anlagenmechaniker SHK, Initiativbewerbung |
| Kontakt | Kontaktkarten, Öffnungszeiten mit „Heute“-Markierung, Formular | | Kontakt | Kontaktkarten, Öffnungszeiten mit „Heute“-Markierung, Formular |
| Footer | Adresse, Kontakt, Öffnungszeiten, Links | | Footer | Adresse, Kontakt, Öffnungszeiten, Links |
@@ -44,16 +87,6 @@ Den kompletten Ordnerinhalt auf den Webspace laden (z. B. per FTP). Voraussetzun
- `404.html` nutzt absolute Pfade (`/assets/...`) – liegt die Seite in einem Unterordner, Pfade dort anpassen. - `404.html` nutzt absolute Pfade (`/assets/...`) – liegt die Seite in einem Unterordner, Pfade dort anpassen.
- CSS und JS werden eine Woche gecacht. Nach Änderungen an `main.css` oder den Skripten die Versionsnummer `?v=…` in allen HTML-Dateien hochzählen, damit Besucher nicht alte Dateien sehen. - CSS und JS werden eine Woche gecacht. Nach Änderungen an `main.css` oder den Skripten die Versionsnummer `?v=…` in allen HTML-Dateien hochzählen, damit Besucher nicht alte Dateien sehen.
## Vor dem Livegang prüfen (TODO)
Die Firmendaten stammen aus öffentlich zugänglichen Quellen. Bitte bestätigen bzw. ergänzen:
- [ ] **Impressum:** Umsatzsteuer-ID und berufsrechtliche Angaben (Kammer, Berufsbezeichnung) – als Kommentar in `impressum.html` vorbereitet.
- [ ] **Datenschutz:** Hosting-Anbieter, Speicherdauer der Server-Logs, Vertrag zur Auftragsverarbeitung – als `TODO` in `datenschutz.html` markiert. Rechtstexte sind Entwürfe und ersetzen keine Rechtsberatung.
- [ ] **Inhalte:** Mitarbeiterzahl (≈ 25), Ausbildungsstart (September), Leistungsliste, Texte zur Karriere.
- [ ] **Formular:** In `kontakt.php` Empfänger/Absender prüfen (`RECIPIENT`, `SENDER`); einmal testweise absenden.
- [ ] Optional: echte Fotos (Team, Projekte, Bäder) ergänzen – die Illustrationen sind so gestaltet, dass sie auch ohne Fotos tragen.
## Struktur ## Struktur
``` ```
@@ -71,12 +104,14 @@ assets/js/contact.js Öffnungszeiten live, Feiertage, Kontaktformular
assets/fonts/ Instrument Sans (OFL, lokal) assets/fonts/ Instrument Sans (OFL, lokal)
assets/img/ Favicon, Logo, Open-Graph-Bild assets/img/ Favicon, Logo, Open-Graph-Bild
tools/og-template.html Vorlage zum Neu-Rendern des Open-Graph-Bilds tools/og-template.html Vorlage zum Neu-Rendern des Open-Graph-Bilds
.gitea/template Regeln für „Diese Vorlage verwenden“ (nur in der Vorlage)
``` ```
## Anpassen ## Anpassen
- **Farben, Abstände, Schriften:** Design-Tokens am Anfang von `assets/css/main.css` (`--warm`, `--cool`, `--ink`, `--paper` …). - **Farben, Abstände, Schriften:** Design-Tokens am Anfang von `assets/css/main.css` (`--warm`, `--cool`, `--ink`, `--paper` …).
- **Öffnungszeiten:** in `assets/js/contact.js` (`SCHEDULE`) sowie in `index.html` (Text und Schema.org-Daten). - **Öffnungszeiten:** in `assets/js/contact.js` (`SCHEDULE`) sowie in den HTML-Dateien (Text und Schema.org-Daten).
- **Feiertage:** `BUNDESLAND` in `assets/js/contact.js`. Es zählen nur landesweite Feiertage. Die Ausnahme ist Bayern: Dort zählt Mariä Himmelfahrt mit (gilt in Gemeinden mit überwiegend katholischer Bevölkerung).
- **Heizungs-Finder:** Gewichtung in `assets/js/finder.js` (`evaluate`), Texte in `TEXTS`. - **Heizungs-Finder:** Gewichtung in `assets/js/finder.js` (`evaluate`), Texte in `TEXTS`.
- **Open-Graph-Bild:** `tools/og-template.html` im Browser öffnen (über einen lokalen Server) und einen Screenshot mit 1200 × 630 px als `assets/img/og-image.jpg` speichern. - **Open-Graph-Bild:** `tools/og-template.html` im Browser öffnen (über einen lokalen Server) und einen Screenshot mit 1200 × 630 px als `assets/img/og-image.jpg` speichern.
+1 -1
View File
@@ -1,5 +1,5 @@
/* ========================================================================== /* ==========================================================================
Olzinger Haustechnik – Stylesheet HSK-Vorlage – Stylesheet
Gestaltung: Wärmebild-Ästhetik · warm (Vorlauf) trifft kalt (Rücklauf) Gestaltung: Wärmebild-Ästhetik · warm (Vorlauf) trifft kalt (Rücklauf)
========================================================================== */ ========================================================================== */
+2 -2
View File
@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 260 56" role="img" aria-label="Olzinger Haustechnik"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 56" role="img" aria-label="Mustermann Haustechnik">
<defs> <defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="0"> <linearGradient id="g" x1="0" y1="0" x2="1" y2="0">
<stop offset="0" stop-color="#2E9BEF"/> <stop offset="0" stop-color="#2E9BEF"/>
@@ -8,6 +8,6 @@
</defs> </defs>
<path d="M17.1 43.6A19 19 0 1 1 38.9 43.6" fill="none" stroke="url(#g)" stroke-width="7" stroke-linecap="round"/> <path d="M17.1 43.6A19 19 0 1 1 38.9 43.6" fill="none" stroke="url(#g)" stroke-width="7" stroke-linecap="round"/>
<circle cx="28" cy="28" r="4.4" fill="#0B151E"/> <circle cx="28" cy="28" r="4.4" fill="#0B151E"/>
<text x="62" y="31" font-family="Instrument Sans, Arial, sans-serif" font-weight="700" font-size="26" letter-spacing="1" fill="#0B151E">OLZINGER</text> <text x="62" y="31" font-family="Instrument Sans, Arial, sans-serif" font-weight="700" font-size="26" letter-spacing="1" fill="#0B151E">MUSTERMANN</text>
<text x="63" y="47" font-family="Instrument Sans, Arial, sans-serif" font-weight="500" font-size="10.5" letter-spacing="3.2" fill="#4D5963">HAUSTECHNIK</text> <text x="63" y="47" font-family="Instrument Sans, Arial, sans-serif" font-weight="500" font-size="10.5" letter-spacing="3.2" fill="#4D5963">HAUSTECHNIK</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 833 B

After

Width:  |  Height:  |  Size: 837 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 103 KiB

+38 -11
View File
@@ -1,10 +1,14 @@
/* ========================================================================== /* ==========================================================================
Olzinger – Öffnungszeiten (live, inkl. bayerischer Feiertage) & Kontaktformular HSK-Vorlage – Öffnungszeiten (live, inkl. Feiertage des Bundeslands) & Kontaktformular
========================================================================== */ ========================================================================== */
(function (w, d) { (function (w, d) {
'use strict'; 'use strict';
/* ---------- Öffnungszeiten ---------- */ /* ---------- Öffnungszeiten ---------- */
// Bundesland des Betriebs für die Feiertage:
// BW BY BE BB HB HH HE MV NI NW RP SL SN ST SH TH
var BUNDESLAND = 'BY';
// Minuten seit Mitternacht; Index = Wochentag (0 = Sonntag) // Minuten seit Mitternacht; Index = Wochentag (0 = Sonntag)
var SCHEDULE = { var SCHEDULE = {
0: [], 0: [],
@@ -31,23 +35,46 @@
return Date.UTC(y, month - 1, day); return Date.UTC(y, month - 1, day);
} }
// Gesetzliche Feiertage in Bayern (Gemeinde mit überwiegend katholischer Bevölkerung) // Gesetzliche Feiertage: bundesweit plus die des eingestellten Bundeslands.
// Nur landesweite Feiertage; Fronleichnam in Teilen von Sachsen/Thüringen und
// Mariä Himmelfahrt in Bayern gelten nicht überall (BY: hier mitgezählt, wie in
// Gemeinden mit überwiegend katholischer Bevölkerung).
var REGIONAL = {
dreikoenige: ['BW', 'BY', 'ST'],
frauentag: ['BE', 'MV'],
fronleichnam: ['BW', 'BY', 'HE', 'NW', 'RP', 'SL'],
mariae: ['BY', 'SL'],
kindertag: ['TH'],
reformation: ['BB', 'HB', 'HH', 'MV', 'NI', 'SN', 'ST', 'SH', 'TH'],
allerheiligen: ['BW', 'BY', 'NW', 'RP', 'SL'],
busstag: ['SN']
};
function inLand(key) { return REGIONAL[key].indexOf(BUNDESLAND) > -1; }
var holidayCache = {}; var holidayCache = {};
function holidays(y) { function holidays(y) {
if (holidayCache[y]) return holidayCache[y]; if (holidayCache[y]) return holidayCache[y];
var DAY = 864e5, e = easter(y), map = {}; var DAY = 864e5, e = easter(y), map = {};
var add = function (t, name) { var dt = new Date(t); map[dt.getUTCMonth() + 1 + '-' + dt.getUTCDate()] = name; }; var add = function (t, name) { var dt = new Date(t); map[dt.getUTCMonth() + 1 + '-' + dt.getUTCDate()] = name; };
add(Date.UTC(y, 0, 1), 'Neujahr'); add(Date.UTC(y, 0, 1), 'Neujahr');
add(Date.UTC(y, 0, 6), 'Heilige Drei Könige'); if (inLand('dreikoenige')) add(Date.UTC(y, 0, 6), 'Heilige Drei Könige');
if (inLand('frauentag')) add(Date.UTC(y, 2, 8), 'Internationaler Frauentag');
add(e - 2 * DAY, 'Karfreitag'); add(e - 2 * DAY, 'Karfreitag');
add(e + 1 * DAY, 'Ostermontag'); add(e + 1 * DAY, 'Ostermontag');
add(Date.UTC(y, 4, 1), 'Tag der Arbeit'); add(Date.UTC(y, 4, 1), 'Tag der Arbeit');
add(e + 39 * DAY, 'Christi Himmelfahrt'); add(e + 39 * DAY, 'Christi Himmelfahrt');
add(e + 50 * DAY, 'Pfingstmontag'); add(e + 50 * DAY, 'Pfingstmontag');
add(e + 60 * DAY, 'Fronleichnam'); if (inLand('fronleichnam')) add(e + 60 * DAY, 'Fronleichnam');
add(Date.UTC(y, 7, 15), 'Mariä Himmelfahrt'); if (inLand('mariae')) add(Date.UTC(y, 7, 15), 'Mariä Himmelfahrt');
if (inLand('kindertag')) add(Date.UTC(y, 8, 20), 'Weltkindertag');
add(Date.UTC(y, 9, 3), 'Tag der Deutschen Einheit'); add(Date.UTC(y, 9, 3), 'Tag der Deutschen Einheit');
add(Date.UTC(y, 10, 1), 'Allerheiligen'); if (inLand('reformation')) add(Date.UTC(y, 9, 31), 'Reformationstag');
if (inLand('allerheiligen')) add(Date.UTC(y, 10, 1), 'Allerheiligen');
if (inLand('busstag')) {
// Mittwoch vor dem 23. November
var nov23 = Date.UTC(y, 10, 23);
add(nov23 - (((new Date(nov23).getUTCDay() + 4) % 7) || 7) * DAY, 'Buß- und Bettag');
}
add(Date.UTC(y, 11, 25), '1. Weihnachtstag'); add(Date.UTC(y, 11, 25), '1. Weihnachtstag');
add(Date.UTC(y, 11, 26), '2. Weihnachtstag'); add(Date.UTC(y, 11, 26), '2. Weihnachtstag');
return (holidayCache[y] = map); return (holidayCache[y] = map);
@@ -124,7 +151,7 @@
var ts = form.querySelector('[data-ts]'); var ts = form.querySelector('[data-ts]');
if (ts) ts.value = String(Date.now()); if (ts) ts.value = String(Date.now());
var RECIPIENT = 'kontakt@olzinger.de'; var RECIPIENT = 'kontakt@example.com';
var fields = { var fields = {
name: form.querySelector('[name="name"]'), name: form.querySelector('[name="name"]'),
email: form.querySelector('[name="email"]'), email: form.querySelector('[name="email"]'),
@@ -164,8 +191,8 @@
Array.prototype.forEach.call(radios, function (r) { r.checked = (r.value === topic); }); Array.prototype.forEach.call(radios, function (r) { r.checked = (r.value === topic); });
} }
w.addEventListener('olz:topic', function (e) { selectTopic(e.detail); }); w.addEventListener('hsk:topic', function (e) { selectTopic(e.detail); });
w.addEventListener('olz:prefill', function (e) { w.addEventListener('hsk:prefill', function (e) {
var det = e.detail || {}; var det = e.detail || {};
selectTopic(det.topic); selectTopic(det.topic);
if (det.message && fields.message) { if (det.message && fields.message) {
@@ -186,7 +213,7 @@
String(data.get('message') || '') String(data.get('message') || '')
]; ];
return 'mailto:' + RECIPIENT + return 'mailto:' + RECIPIENT +
'?subject=' + encodeURIComponent('Anfrage über olzinger.de – ' + topic) + '?subject=' + encodeURIComponent('Anfrage über example.com – ' + topic) +
'&body=' + encodeURIComponent(lines.join('\n')); '&body=' + encodeURIComponent(lines.join('\n'));
} }
@@ -213,7 +240,7 @@
setStatus('error', 'Bitte prüfen Sie Ihre Angaben – einige Felder sind unvollständig.'); setStatus('error', 'Bitte prüfen Sie Ihre Angaben – einige Felder sind unvollständig.');
} else { } else {
w.location.href = buildMail(data); w.location.href = buildMail(data);
setStatus('info', '<strong>Fast geschafft:</strong> Ihr E-Mail-Programm öffnet sich mit Ihrer vorbereiteten Anfrage – bitte dort nur noch auf „Senden“ klicken. Alternativ erreichen Sie uns unter <a href="tel:+4987172617">0871&nbsp;72617</a>.'); setStatus('info', '<strong>Fast geschafft:</strong> Ihr E-Mail-Programm öffnet sich mit Ihrer vorbereiteten Anfrage – bitte dort nur noch auf „Senden“ klicken. Alternativ erreichen Sie uns unter <a href="tel:+491234567890">01234&nbsp;567890</a>.');
} }
}; };
+2 -2
View File
@@ -1,5 +1,5 @@
/* ========================================================================== /* ==========================================================================
Olzinger – Heizungs-Finder HSK-Vorlage – Heizungs-Finder
Vier Fragen → erste, unverbindliche Empfehlung (Wärmepumpe / Pellets / Hybrid). Vier Fragen → erste, unverbindliche Empfehlung (Wärmepumpe / Pellets / Hybrid).
Das Ergebnis kann direkt ins Kontaktformular übernommen werden. Das Ergebnis kann direkt ins Kontaktformular übernommen werden.
========================================================================== */ ========================================================================== */
@@ -193,7 +193,7 @@
var applyBtn = result.querySelector('[data-finder-apply]'); var applyBtn = result.querySelector('[data-finder-apply]');
if (applyBtn) { if (applyBtn) {
applyBtn.addEventListener('click', function () { applyBtn.addEventListener('click', function () {
w.dispatchEvent(new CustomEvent('olz:prefill', { w.dispatchEvent(new CustomEvent('hsk:prefill', {
detail: { topic: applyBtn.getAttribute('data-topic'), message: applyBtn.getAttribute('data-message') } detail: { topic: applyBtn.getAttribute('data-topic'), message: applyBtn.getAttribute('data-message') }
})); }));
}); });
+1 -1
View File
@@ -1,5 +1,5 @@
/* ========================================================================== /* ==========================================================================
Olzinger – Energie-Haus HSK-Vorlage – Energie-Haus
Tabs + Hotspots steuern, welches System im Hausschnitt hervorgehoben wird. Tabs + Hotspots steuern, welches System im Hausschnitt hervorgehoben wird.
========================================================================== */ ========================================================================== */
(function (w, d) { (function (w, d) {
+6 -6
View File
@@ -1,5 +1,5 @@
/* ========================================================================== /* ==========================================================================
Olzinger – Hauptskript HSK-Vorlage – Hauptskript
Navigation, mobiles Menü, dezente Einblendungen, Leistungs-Karussell (mobil) Navigation, mobiles Menü, dezente Einblendungen, Leistungs-Karussell (mobil)
und Kartenstapel (Desktop). Bewusst ohne Bibliotheken. und Kartenstapel (Desktop). Bewusst ohne Bibliotheken.
========================================================================== */ ========================================================================== */
@@ -12,17 +12,17 @@
var reduce = w.matchMedia('(prefers-reduced-motion: reduce)').matches; var reduce = w.matchMedia('(prefers-reduced-motion: reduce)').matches;
var hasIO = 'IntersectionObserver' in w; var hasIO = 'IntersectionObserver' in w;
w.__olzReady = true; w.__hskReady = true;
/* ---------- Dynamische Jahreszahlen ---------- */ /* ---------- Dynamische Jahreszahlen ---------- */
var nowYear = new Date().getFullYear(); var nowYear = new Date().getFullYear();
$$('[data-current-year]').forEach(function (el) { el.textContent = nowYear; }); $$('[data-current-year]').forEach(function (el) { el.textContent = nowYear; });
$$('[data-years]').forEach(function (el) { el.textContent = nowYear - 1985; }); $$('[data-years]').forEach(function (el) { el.textContent = nowYear - 1990; });
/* ---------- Wärmebild (ruhiger Hintergrund im Hero) ---------- */ /* ---------- Wärmebild (ruhiger Hintergrund im Hero) ---------- */
var canvas = $('[data-thermal]'); var canvas = $('[data-thermal]');
if (canvas && w.OlzThermal) { if (canvas && w.HskThermal) {
var thermal = w.OlzThermal.init(canvas, { var thermal = w.HskThermal.init(canvas, {
hero: $('[data-hero]'), hero: $('[data-hero]'),
calm: $('.hero__aside'), calm: $('.hero__aside'),
reduceMotion: reduce reduceMotion: reduce
@@ -64,7 +64,7 @@
d.addEventListener('click', function (e) { d.addEventListener('click', function (e) {
var a = e.target.closest('a[href*="#"]'); var a = e.target.closest('a[href*="#"]');
if (!a) return; if (!a) return;
if (a.dataset.topic) w.dispatchEvent(new CustomEvent('olz:topic', { detail: a.dataset.topic })); if (a.dataset.topic) w.dispatchEvent(new CustomEvent('hsk:topic', { detail: a.dataset.topic }));
if (menuOpen) setMenu(false); if (menuOpen) setMenu(false);
}); });
+2 -2
View File
@@ -1,5 +1,5 @@
/* ========================================================================== /* ==========================================================================
Olzinger – „Wärmebild“ (WebGL) HSK-Vorlage – „Wärmebild“ (WebGL)
Ein ruhiges thermografisches Feld mit Isothermen als Hero-Hintergrund. Ein ruhiges thermografisches Feld mit Isothermen als Hero-Hintergrund.
Eine langsam wandernde Wärmequelle hält das Bild lebendig – ganz ohne Eine langsam wandernde Wärmequelle hält das Bild lebendig – ganz ohne
Maus- oder Touch-Interaktion. Hinter Fließtext wird die Wärme gedämpft. Maus- oder Touch-Interaktion. Hinter Fließtext wird die Wärme gedämpft.
@@ -283,5 +283,5 @@
function d() { return document; } function d() { return document; }
w.OlzThermal = { init: init }; w.HskThermal = { init: init };
})(window); })(window);
+20 -18
View File
@@ -3,10 +3,10 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Datenschutz – Olzinger Haustechnik</title> <title>Datenschutz – Mustermann Haustechnik</title>
<meta name="description" content="Datenschutzerklärung der Olzinger GmbH – Haustechnik in Ergolding bei Landshut."> <meta name="description" content="Datenschutzerklärung der Mustermann Haustechnik GmbH – Haustechnik in Musterstadt und Umgebung.">
<meta name="robots" content="noindex, follow"> <meta name="robots" content="noindex, follow">
<link rel="canonical" href="https://www.olzinger.de/datenschutz.html"> <link rel="canonical" href="https://www.example.com/datenschutz.html">
<meta name="theme-color" content="#0B151E"> <meta name="theme-color" content="#0B151E">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<link rel="icon" href="assets/img/favicon.svg" type="image/svg+xml"> <link rel="icon" href="assets/img/favicon.svg" type="image/svg+xml">
@@ -18,7 +18,7 @@
(function (d, w) { (function (d, w) {
var h = d.documentElement; var h = d.documentElement;
h.className = h.className.replace('no-js', 'js'); h.className = h.className.replace('no-js', 'js');
w.setTimeout(function () { if (!w.__olzReady) { h.classList.remove('js'); h.classList.add('no-js'); } }, 4500); w.setTimeout(function () { if (!w.__hskReady) { h.classList.remove('js'); h.classList.add('no-js'); } }, 4500);
})(document, window); })(document, window);
</script> </script>
<script src="assets/js/contact.js?v=20261004" defer></script> <script src="assets/js/contact.js?v=20261004" defer></script>
@@ -30,6 +30,8 @@
zugeschnitten (keine Cookies, kein Tracking, lokal eingebundene Schriften und Skripte). zugeschnitten (keine Cookies, kein Tracking, lokal eingebundene Schriften und Skripte).
Sie ersetzt keine Rechtsberatung – bitte vor dem Livegang prüfen lassen und den Sie ersetzt keine Rechtsberatung – bitte vor dem Livegang prüfen lassen und den
Hosting-Anbieter (TODO) ergänzen. Hosting-Anbieter (TODO) ergänzen.
HSK-VORLAGE: Firmendaten sind Platzhalter; zuständige Aufsichtsbehörde (Abschnitt 9)
nach dem Bundesland des Betriebs eintragen.
--> -->
<a class="skip-link" href="#main">Zum Inhalt springen</a> <a class="skip-link" href="#main">Zum Inhalt springen</a>
@@ -43,13 +45,13 @@
<header class="nav" data-nav> <header class="nav" data-nav>
<div class="nav__bar"> <div class="nav__bar">
<a class="logo" href="index.html" aria-label="Olzinger Haustechnik – zur Startseite"> <a class="logo" href="index.html" aria-label="Mustermann Haustechnik – zur Startseite">
<svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true"> <svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true">
<defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs> <defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs>
<path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/> <path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/>
<circle cx="20" cy="20" r="3.4" fill="currentColor"/> <circle cx="20" cy="20" r="3.4" fill="currentColor"/>
</svg> </svg>
<span class="logo__text"><span class="logo__word">Olzinger</span><span class="logo__sub">Haustechnik</span></span> <span class="logo__text"><span class="logo__word">Mustermann</span><span class="logo__sub">Haustechnik</span></span>
</a> </a>
<nav class="nav__links" aria-label="Hauptnavigation"> <nav class="nav__links" aria-label="Hauptnavigation">
<a href="index.html#leistungen">Leistungen</a> <a href="index.html#leistungen">Leistungen</a>
@@ -59,7 +61,7 @@
<a href="index.html#karriere">Karriere</a> <a href="index.html#karriere">Karriere</a>
</nav> </nav>
<div class="nav__actions"> <div class="nav__actions">
<a class="nav__phone" href="tel:+4987172617" aria-label="Anrufen: 0871 72617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg><span>0871&nbsp;72617</span></a> <a class="nav__phone" href="tel:+491234567890" aria-label="Anrufen: 01234 567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg><span>01234&nbsp;567890</span></a>
<a class="btn btn--sm btn--warm" href="index.html#kontakt"><span class="btn__label">Anfrage stellen</span></a> <a class="btn btn--sm btn--warm" href="index.html#kontakt"><span class="btn__label">Anfrage stellen</span></a>
<button class="nav__toggle" type="button" aria-expanded="false" aria-controls="menu" data-menu-toggle> <button class="nav__toggle" type="button" aria-expanded="false" aria-controls="menu" data-menu-toggle>
<span class="nav__toggle-lines" aria-hidden="true"><i></i><i></i></span> <span class="nav__toggle-lines" aria-hidden="true"><i></i><i></i></span>
@@ -79,8 +81,8 @@
<a href="index.html#kontakt">Kontakt</a> <a href="index.html#kontakt">Kontakt</a>
</nav> </nav>
<div class="menu__foot"> <div class="menu__foot">
<a href="tel:+4987172617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>0871&nbsp;72617</a> <a href="tel:+491234567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>01234&nbsp;567890</a>
<a href="mailto:kontakt@olzinger.de"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@olzinger.de</a> <a href="mailto:kontakt@example.com"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@example.com</a>
<p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p> <p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p>
</div> </div>
</div> </div>
@@ -111,10 +113,10 @@
<h2 id="verantwortlicher">1. Verantwortlicher</h2> <h2 id="verantwortlicher">1. Verantwortlicher</h2>
<p>Verantwortlich für die Datenverarbeitung auf dieser Website im Sinne der Datenschutz-Grundverordnung (DSGVO) ist:</p> <p>Verantwortlich für die Datenverarbeitung auf dieser Website im Sinne der Datenschutz-Grundverordnung (DSGVO) ist:</p>
<div class="legal__card"> <div class="legal__card">
<p><strong>Olzinger GmbH</strong></p> <p><strong>Mustermann Haustechnik GmbH</strong></p>
<p>Ahornstraße 112, 84030 Ergolding</p> <p>Musterstraße 1, 12345 Musterstadt</p>
<p>Vertreten durch die Geschäftsführer Franz Ramsauer und Robert Straub</p> <p>Vertreten durch die Geschäftsführerin Erika Mustermann</p>
<p>Telefon: <a href="tel:+4987172617">0871&nbsp;72617</a> · E-Mail: <a href="mailto:kontakt@olzinger.de">kontakt@olzinger.de</a></p> <p>Telefon: <a href="tel:+491234567890">01234&nbsp;567890</a> · E-Mail: <a href="mailto:kontakt@example.com">kontakt@example.com</a></p>
</div> </div>
<h2 id="ueberblick">2. Datenschutz auf einen Blick</h2> <h2 id="ueberblick">2. Datenschutz auf einen Blick</h2>
@@ -155,7 +157,7 @@
<h2 id="rechte">9. Ihre Rechte</h2> <h2 id="rechte">9. Ihre Rechte</h2>
<p>Sie haben jederzeit das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16 DSGVO), Löschung (Art. 17 DSGVO), Einschränkung der Verarbeitung (Art. 18 DSGVO), Datenübertragbarkeit (Art. 20 DSGVO) sowie das Recht, einer Verarbeitung auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO zu widersprechen (Art. 21 DSGVO). Eine erteilte Einwilligung können Sie jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3 DSGVO). Wenden Sie sich dazu einfach an die oben genannten Kontaktdaten.</p> <p>Sie haben jederzeit das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16 DSGVO), Löschung (Art. 17 DSGVO), Einschränkung der Verarbeitung (Art. 18 DSGVO), Datenübertragbarkeit (Art. 20 DSGVO) sowie das Recht, einer Verarbeitung auf Grundlage von Art. 6 Abs. 1 lit. f DSGVO zu widersprechen (Art. 21 DSGVO). Eine erteilte Einwilligung können Sie jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3 DSGVO). Wenden Sie sich dazu einfach an die oben genannten Kontaktdaten.</p>
<p>Außerdem haben Sie das Recht, sich bei einer Datenschutz-Aufsichtsbehörde zu beschweren (Art. 77 DSGVO). Für uns zuständig ist das Bayerische Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach.</p> <p>Außerdem haben Sie das Recht, sich bei einer Datenschutz-Aufsichtsbehörde zu beschweren (Art. 77 DSGVO). Für uns zuständig ist die Datenschutz-Aufsichtsbehörde des Bundeslandes, in dem unser Betrieb seinen Sitz hat. <!-- TODO: Behörde mit Anschrift nennen, z. B. Bayern: Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach --></p>
<h2>10. Verschlüsselung</h2> <h2>10. Verschlüsselung</h2>
<p>Diese Website nutzt aus Sicherheitsgründen eine SSL- bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie am Schloss-Symbol in der Adresszeile Ihres Browsers und daran, dass die Adresse mit „https://“ beginnt.</p> <p>Diese Website nutzt aus Sicherheitsgründen eine SSL- bzw. TLS-Verschlüsselung. Eine verschlüsselte Verbindung erkennen Sie am Schloss-Symbol in der Adresszeile Ihres Browsers und daran, dass die Adresse mit „https://“ beginnt.</p>
@@ -171,12 +173,12 @@
<div class="container"> <div class="container">
<div class="footer__grid"> <div class="footer__grid">
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Olzinger GmbH</h2> <h2 class="footer__h">Mustermann Haustechnik GmbH</h2>
<address>Ahornstraße 112<br>84030 Ergolding</address> <address>Musterstraße 1<br>12345 Musterstadt</address>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Kontakt</h2> <h2 class="footer__h">Kontakt</h2>
<p><a href="tel:+4987172617">Tel.&nbsp;0871&nbsp;72617</a><br>Fax&nbsp;0871&nbsp;74963<br><a href="mailto:kontakt@olzinger.de">kontakt@olzinger.de</a></p> <p><a href="tel:+491234567890">Tel.&nbsp;01234&nbsp;567890</a><br>Fax&nbsp;01234&nbsp;567891<br><a href="mailto:kontakt@example.com">kontakt@example.com</a></p>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Öffnungszeiten</h2> <h2 class="footer__h">Öffnungszeiten</h2>
@@ -194,7 +196,7 @@
</nav> </nav>
</div> </div>
<div class="footer__bottom"> <div class="footer__bottom">
<p>© <span data-current-year>2026</span> Olzinger GmbH</p> <p>© <span data-current-year>2026</span> Mustermann Haustechnik GmbH</p>
<ul> <ul>
<li><a href="impressum.html">Impressum</a></li> <li><a href="impressum.html">Impressum</a></li>
<li><a href="datenschutz.html" aria-current="page">Datenschutz</a></li> <li><a href="datenschutz.html" aria-current="page">Datenschutz</a></li>
+27 -28
View File
@@ -3,10 +3,10 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Impressum – Olzinger Haustechnik</title> <title>Impressum – Mustermann Haustechnik</title>
<meta name="description" content="Impressum der Olzinger GmbH – Haustechnik in Ergolding bei Landshut."> <meta name="description" content="Impressum der Mustermann Haustechnik GmbH – Haustechnik in Musterstadt und Umgebung.">
<meta name="robots" content="noindex, follow"> <meta name="robots" content="noindex, follow">
<link rel="canonical" href="https://www.olzinger.de/impressum.html"> <link rel="canonical" href="https://www.example.com/impressum.html">
<meta name="theme-color" content="#0B151E"> <meta name="theme-color" content="#0B151E">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<link rel="icon" href="assets/img/favicon.svg" type="image/svg+xml"> <link rel="icon" href="assets/img/favicon.svg" type="image/svg+xml">
@@ -18,7 +18,7 @@
(function (d, w) { (function (d, w) {
var h = d.documentElement; var h = d.documentElement;
h.className = h.className.replace('no-js', 'js'); h.className = h.className.replace('no-js', 'js');
w.setTimeout(function () { if (!w.__olzReady) { h.classList.remove('js'); h.classList.add('no-js'); } }, 4500); w.setTimeout(function () { if (!w.__hskReady) { h.classList.remove('js'); h.classList.add('no-js'); } }, 4500);
})(document, window); })(document, window);
</script> </script>
<script src="assets/js/contact.js?v=20261004" defer></script> <script src="assets/js/contact.js?v=20261004" defer></script>
@@ -26,10 +26,9 @@
</head> </head>
<body class="page"> <body class="page">
<!-- <!--
HINWEIS: Bitte vor dem Livegang prüfen und ergänzen. HSK-VORLAGE: Alle Firmendaten sind Platzhalter (Mustermann Haustechnik GmbH, Musterstadt,
Die Angaben wurden aus öffentlich zugänglichen Quellen (u. a. dem bisherigen Impressum example.com). Vor dem Livegang durch die echten Angaben des Betriebs ersetzen
auf olzinger.de) übernommen. Mit „TODO“ markierte Punkte bitte aus dem bestehenden (bestehendes Impressum, Handelsregister) und die mit „TODO“ markierten Punkte ergänzen.
Impressum übernehmen bzw. bestätigen.
--> -->
<a class="skip-link" href="#main">Zum Inhalt springen</a> <a class="skip-link" href="#main">Zum Inhalt springen</a>
@@ -43,13 +42,13 @@
<header class="nav" data-nav> <header class="nav" data-nav>
<div class="nav__bar"> <div class="nav__bar">
<a class="logo" href="index.html" aria-label="Olzinger Haustechnik – zur Startseite"> <a class="logo" href="index.html" aria-label="Mustermann Haustechnik – zur Startseite">
<svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true"> <svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true">
<defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs> <defs><linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#2E9BEF"/><stop offset=".55" stop-color="#C2456B"/><stop offset="1" stop-color="#FF6A2B"/></linearGradient></defs>
<path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/> <path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/>
<circle cx="20" cy="20" r="3.4" fill="currentColor"/> <circle cx="20" cy="20" r="3.4" fill="currentColor"/>
</svg> </svg>
<span class="logo__text"><span class="logo__word">Olzinger</span><span class="logo__sub">Haustechnik</span></span> <span class="logo__text"><span class="logo__word">Mustermann</span><span class="logo__sub">Haustechnik</span></span>
</a> </a>
<nav class="nav__links" aria-label="Hauptnavigation"> <nav class="nav__links" aria-label="Hauptnavigation">
<a href="index.html#leistungen">Leistungen</a> <a href="index.html#leistungen">Leistungen</a>
@@ -59,7 +58,7 @@
<a href="index.html#karriere">Karriere</a> <a href="index.html#karriere">Karriere</a>
</nav> </nav>
<div class="nav__actions"> <div class="nav__actions">
<a class="nav__phone" href="tel:+4987172617" aria-label="Anrufen: 0871 72617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg><span>0871&nbsp;72617</span></a> <a class="nav__phone" href="tel:+491234567890" aria-label="Anrufen: 01234 567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg><span>01234&nbsp;567890</span></a>
<a class="btn btn--sm btn--warm" href="index.html#kontakt"><span class="btn__label">Anfrage stellen</span></a> <a class="btn btn--sm btn--warm" href="index.html#kontakt"><span class="btn__label">Anfrage stellen</span></a>
<button class="nav__toggle" type="button" aria-expanded="false" aria-controls="menu" data-menu-toggle> <button class="nav__toggle" type="button" aria-expanded="false" aria-controls="menu" data-menu-toggle>
<span class="nav__toggle-lines" aria-hidden="true"><i></i><i></i></span> <span class="nav__toggle-lines" aria-hidden="true"><i></i><i></i></span>
@@ -79,8 +78,8 @@
<a href="index.html#kontakt">Kontakt</a> <a href="index.html#kontakt">Kontakt</a>
</nav> </nav>
<div class="menu__foot"> <div class="menu__foot">
<a href="tel:+4987172617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>0871&nbsp;72617</a> <a href="tel:+491234567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>01234&nbsp;567890</a>
<a href="mailto:kontakt@olzinger.de"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@olzinger.de</a> <a href="mailto:kontakt@example.com"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@example.com</a>
<p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p> <p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p>
</div> </div>
</div> </div>
@@ -107,24 +106,24 @@
<div class="legal__body" data-reveal> <div class="legal__body" data-reveal>
<h2 id="anbieter">Angaben gemäß § 5 DDG</h2> <h2 id="anbieter">Angaben gemäß § 5 DDG</h2>
<div class="legal__card"> <div class="legal__card">
<p><strong>Olzinger GmbH</strong></p> <p><strong>Mustermann Haustechnik GmbH</strong></p>
<p>Ahornstraße 112<br>84030 Ergolding</p> <p>Musterstraße 1<br>12345 Musterstadt</p>
</div> </div>
<h3>Vertreten durch die Geschäftsführer</h3> <h3>Vertreten durch die Geschäftsführerin</h3>
<p>Franz Ramsauer<br>Robert Straub</p> <p>Erika Mustermann</p>
<h2 id="kontakt">Kontakt</h2> <h2 id="kontakt">Kontakt</h2>
<p> <p>
Telefon: <a href="tel:+4987172617">0871&nbsp;72617</a><br> Telefon: <a href="tel:+491234567890">01234&nbsp;567890</a><br>
Telefax: 0871&nbsp;74963<br> Telefax: 01234&nbsp;567891<br>
E-Mail: <a href="mailto:kontakt@olzinger.de">kontakt@olzinger.de</a> E-Mail: <a href="mailto:kontakt@example.com">kontakt@example.com</a>
</p> </p>
<h2 id="register">Registereintrag</h2> <h2 id="register">Registereintrag</h2>
<p> <p>
Eintragung im Handelsregister<br> Eintragung im Handelsregister<br>
Registergericht: Amtsgericht Landshut<br> Registergericht: Amtsgericht Musterstadt<br>
Registernummer: HRB 3667 Registernummer: HRB 12345
</p> </p>
<!-- TODO: Umsatzsteuer-Identifikationsnummer gemäß § 27a UStG aus dem bisherigen Impressum ergänzen: <!-- TODO: Umsatzsteuer-Identifikationsnummer gemäß § 27a UStG aus dem bisherigen Impressum ergänzen:
<h3>Umsatzsteuer-ID</h3> <h3>Umsatzsteuer-ID</h3>
@@ -133,7 +132,7 @@
<!-- TODO: Berufsrechtliche Angaben bestätigen/ergänzen, z. B.: <!-- TODO: Berufsrechtliche Angaben bestätigen/ergänzen, z. B.:
<h3>Berufsbezeichnung und berufsrechtliche Regelungen</h3> <h3>Berufsbezeichnung und berufsrechtliche Regelungen</h3>
<p>Berufsbezeichnung: Installateur- und Heizungsbauer (verliehen in Deutschland)<br> <p>Berufsbezeichnung: Installateur- und Heizungsbauer (verliehen in Deutschland)<br>
Zuständige Kammer: Handwerkskammer Niederbayern-Oberpfalz<br> Zuständige Kammer: Handwerkskammer [zuständige Kammer eintragen]<br>
Es gilt die Handwerksordnung (HwO), einsehbar unter www.gesetze-im-internet.de</p> Es gilt die Handwerksordnung (HwO), einsehbar unter www.gesetze-im-internet.de</p>
--> -->
@@ -145,7 +144,7 @@
<p>Unsere Website enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber verantwortlich. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.</p> <p>Unsere Website enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber verantwortlich. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.</p>
<h2 id="urheberrecht">Urheberrecht</h2> <h2 id="urheberrecht">Urheberrecht</h2>
<p>Die durch uns erstellten Inhalte und Werke auf dieser Website unterliegen dem deutschen Urheberrecht. Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechts bedürfen der schriftlichen Zustimmung der Olzinger GmbH.</p> <p>Die durch uns erstellten Inhalte und Werke auf dieser Website unterliegen dem deutschen Urheberrecht. Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechts bedürfen der schriftlichen Zustimmung der Mustermann Haustechnik GmbH.</p>
<p>Illustrationen und Grafiken: individuell für diese Website gestaltet. Schrift: Instrument Sans (SIL Open Font License), lokal eingebunden.</p> <p>Illustrationen und Grafiken: individuell für diese Website gestaltet. Schrift: Instrument Sans (SIL Open Font License), lokal eingebunden.</p>
<p><a class="link-arrow" href="index.html"><svg class="icon" aria-hidden="true"><use href="#i-arrow-left"/></svg> Zurück zur Startseite</a></p> <p><a class="link-arrow" href="index.html"><svg class="icon" aria-hidden="true"><use href="#i-arrow-left"/></svg> Zurück zur Startseite</a></p>
@@ -158,12 +157,12 @@
<div class="container"> <div class="container">
<div class="footer__grid"> <div class="footer__grid">
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Olzinger GmbH</h2> <h2 class="footer__h">Mustermann Haustechnik GmbH</h2>
<address>Ahornstraße 112<br>84030 Ergolding</address> <address>Musterstraße 1<br>12345 Musterstadt</address>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Kontakt</h2> <h2 class="footer__h">Kontakt</h2>
<p><a href="tel:+4987172617">Tel.&nbsp;0871&nbsp;72617</a><br>Fax&nbsp;0871&nbsp;74963<br><a href="mailto:kontakt@olzinger.de">kontakt@olzinger.de</a></p> <p><a href="tel:+491234567890">Tel.&nbsp;01234&nbsp;567890</a><br>Fax&nbsp;01234&nbsp;567891<br><a href="mailto:kontakt@example.com">kontakt@example.com</a></p>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Öffnungszeiten</h2> <h2 class="footer__h">Öffnungszeiten</h2>
@@ -181,7 +180,7 @@
</nav> </nav>
</div> </div>
<div class="footer__bottom"> <div class="footer__bottom">
<p>© <span data-current-year>2026</span> Olzinger GmbH</p> <p>© <span data-current-year>2026</span> Mustermann Haustechnik GmbH</p>
<ul> <ul>
<li><a href="impressum.html" aria-current="page">Impressum</a></li> <li><a href="impressum.html" aria-current="page">Impressum</a></li>
<li><a href="datenschutz.html">Datenschutz</a></li> <li><a href="datenschutz.html">Datenschutz</a></li>
+55 -56
View File
@@ -3,19 +3,19 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Olzinger Haustechnik – Heizung, Sanitär, Lüftung &amp; Wärmepumpen in Ergolding bei Landshut</title> <title>Mustermann Haustechnik – Heizung, Sanitär, Lüftung &amp; Wärmepumpen in Musterstadt</title>
<meta name="description" content="Ihr Fachbetrieb für Heizung, Sanitär, Lüftung und regenerative Heiztechnik in Ergolding bei Landshut. Wärmepumpen, Pelletheizungen, Solarthermie, Badsanierung und Kundendienst – seit 1985."> <meta name="description" content="Ihr Fachbetrieb für Heizung, Sanitär, Lüftung und regenerative Heiztechnik in Musterstadt und Umgebung. Wärmepumpen, Pelletheizungen, Solarthermie, Badsanierung und Kundendienst – seit 1990.">
<link rel="canonical" href="https://www.olzinger.de/"> <link rel="canonical" href="https://www.example.com/">
<meta name="theme-color" content="#0B151E"> <meta name="theme-color" content="#0B151E">
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:locale" content="de_DE"> <meta property="og:locale" content="de_DE">
<meta property="og:site_name" content="Olzinger Haustechnik"> <meta property="og:site_name" content="Mustermann Haustechnik">
<meta property="og:title" content="Olzinger Haustechnik – Wärme. Wasser. Luft."> <meta property="og:title" content="Mustermann Haustechnik – Wärme. Wasser. Luft.">
<meta property="og:description" content="Heizung, Sanitär, Lüftung und regenerative Heiztechnik aus Ergolding bei Landshut – seit 1985."> <meta property="og:description" content="Heizung, Sanitär, Lüftung und regenerative Heiztechnik aus Musterstadt und Umgebung – seit 1990.">
<meta property="og:url" content="https://www.olzinger.de/"> <meta property="og:url" content="https://www.example.com/">
<meta property="og:image" content="https://www.olzinger.de/assets/img/og-image.jpg"> <meta property="og:image" content="https://www.example.com/assets/img/og-image.jpg">
<meta property="og:image:width" content="1200"> <meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630"> <meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
@@ -34,7 +34,7 @@
var h = d.documentElement; var h = d.documentElement;
h.className = h.className.replace('no-js', 'js'); h.className = h.className.replace('no-js', 'js');
w.setTimeout(function () { w.setTimeout(function () {
if (!w.__olzReady) { h.classList.remove('js'); h.classList.add('no-js'); } if (!w.__hskReady) { h.classList.remove('js'); h.classList.add('no-js'); }
}, 4500); }, 4500);
})(document, window); })(document, window);
</script> </script>
@@ -43,31 +43,30 @@
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": ["HVACBusiness", "Plumber"], "@type": ["HVACBusiness", "Plumber"],
"@id": "https://www.olzinger.de/#betrieb", "@id": "https://www.example.com/#betrieb",
"name": "Olzinger GmbH", "name": "Mustermann Haustechnik GmbH",
"alternateName": "Olzinger Haustechnik", "alternateName": "Mustermann Haustechnik",
"description": "Fachbetrieb für Heizung, Sanitär, Lüftung und regenerative Heiztechnik in Ergolding bei Landshut – seit 1985.", "description": "Fachbetrieb für Heizung, Sanitär, Lüftung und regenerative Heiztechnik in Musterstadt und Umgebung – seit 1990.",
"url": "https://www.olzinger.de/", "url": "https://www.example.com/",
"logo": "https://www.olzinger.de/assets/img/logo.svg", "logo": "https://www.example.com/assets/img/logo.svg",
"image": "https://www.olzinger.de/assets/img/og-image.jpg", "image": "https://www.example.com/assets/img/og-image.jpg",
"telephone": "+49 871 72617", "telephone": "+49 1234 567890",
"faxNumber": "+49 871 74963", "faxNumber": "+49 1234 567891",
"email": "kontakt@olzinger.de", "email": "kontakt@example.com",
"foundingDate": "1985", "foundingDate": "1990",
"founder": { "@type": "Person", "name": "Richard Olzinger" }, "founder": { "@type": "Person", "name": "Max Mustermann" },
"numberOfEmployees": { "@type": "QuantitativeValue", "value": 25 }, "numberOfEmployees": { "@type": "QuantitativeValue", "value": 20 },
"address": { "address": {
"@type": "PostalAddress", "@type": "PostalAddress",
"streetAddress": "Ahornstraße 112", "streetAddress": "Musterstraße 1",
"postalCode": "84030", "postalCode": "12345",
"addressLocality": "Ergolding", "addressLocality": "Musterstadt",
"addressRegion": "Bayern", "addressRegion": "Bayern",
"addressCountry": "DE" "addressCountry": "DE"
}, },
"areaServed": [ "areaServed": [
{ "@type": "City", "name": "Ergolding" }, { "@type": "City", "name": "Musterstadt" },
{ "@type": "City", "name": "Landshut" }, { "@type": "AdministrativeArea", "name": "Landkreis Musterstadt" }
{ "@type": "AdministrativeArea", "name": "Landkreis Landshut" }
], ],
"openingHoursSpecification": [ "openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"], "opens": "07:00", "closes": "12:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"], "opens": "07:00", "closes": "12:00" },
@@ -125,7 +124,7 @@
<!-- Navigation --> <!-- Navigation -->
<header class="nav" data-nav> <header class="nav" data-nav>
<div class="nav__bar"> <div class="nav__bar">
<a class="logo" href="#top" aria-label="Olzinger Haustechnik – zum Seitenanfang"> <a class="logo" href="#top" aria-label="Mustermann Haustechnik – zum Seitenanfang">
<svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true"> <svg class="logo__mark" viewBox="0 0 40 40" aria-hidden="true">
<defs> <defs>
<linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0"> <linearGradient id="g-logo" x1="0" y1="0" x2="1" y2="0">
@@ -137,7 +136,7 @@
<path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/> <path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/>
<circle cx="20" cy="20" r="3.4" fill="currentColor"/> <circle cx="20" cy="20" r="3.4" fill="currentColor"/>
</svg> </svg>
<span class="logo__text"><span class="logo__word">Olzinger</span><span class="logo__sub">Haustechnik</span></span> <span class="logo__text"><span class="logo__word">Mustermann</span><span class="logo__sub">Haustechnik</span></span>
</a> </a>
<nav class="nav__links" aria-label="Hauptnavigation"> <nav class="nav__links" aria-label="Hauptnavigation">
@@ -149,9 +148,9 @@
</nav> </nav>
<div class="nav__actions"> <div class="nav__actions">
<a class="nav__phone" href="tel:+4987172617" aria-label="Anrufen: 0871 72617"> <a class="nav__phone" href="tel:+491234567890" aria-label="Anrufen: 01234 567890">
<svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg> <svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>
<span>0871&nbsp;72617</span> <span>01234&nbsp;567890</span>
</a> </a>
<a class="btn btn--sm btn--warm" href="#kontakt"> <a class="btn btn--sm btn--warm" href="#kontakt">
<span class="btn__label">Anfrage stellen</span> <span class="btn__label">Anfrage stellen</span>
@@ -175,8 +174,8 @@
<a href="#kontakt">Kontakt</a> <a href="#kontakt">Kontakt</a>
</nav> </nav>
<div class="menu__foot"> <div class="menu__foot">
<a href="tel:+4987172617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>0871&nbsp;72617</a> <a href="tel:+491234567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>01234&nbsp;567890</a>
<a href="mailto:kontakt@olzinger.de"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@olzinger.de</a> <a href="mailto:kontakt@example.com"><svg class="icon" aria-hidden="true"><use href="#i-mail"/></svg>kontakt@example.com</a>
<p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p> <p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p>
</div> </div>
</div> </div>
@@ -190,21 +189,21 @@
<div class="container hero__inner"> <div class="container hero__inner">
<h1 class="hero__title"> <h1 class="hero__title">
<span class="sr-only">Olzinger Haustechnik: </span> <span class="sr-only">Mustermann Haustechnik: </span>
<span class="hero__line"><span class="hero__word">Wärme<i class="hero__dot hero__dot--warm"></i></span></span> <span class="hero__line"><span class="hero__word">Wärme<i class="hero__dot hero__dot--warm"></i></span></span>
<span class="hero__line"><span class="hero__word">Wasser<i class="hero__dot hero__dot--cool"></i></span></span> <span class="hero__line"><span class="hero__word">Wasser<i class="hero__dot hero__dot--cool"></i></span></span>
<span class="hero__line"><span class="hero__word">Luft<i class="hero__dot hero__dot--air"></i></span></span> <span class="hero__line"><span class="hero__word">Luft<i class="hero__dot hero__dot--air"></i></span></span>
</h1> </h1>
<div class="hero__aside" data-hero-fade> <div class="hero__aside" data-hero-fade>
<p class="hero__lead">Heizung, Sanitär und Lüftung vom Fachbetrieb aus Ergolding – seit&nbsp;1985.</p> <p class="hero__lead">Heizung, Sanitär und Lüftung vom Fachbetrieb aus Musterstadt – seit&nbsp;1990.</p>
<div class="hero__ctas"> <div class="hero__ctas">
<a class="btn btn--light" href="#kontakt"> <a class="btn btn--light" href="#kontakt">
<span class="btn__label">Anfrage stellen</span> <span class="btn__label">Anfrage stellen</span>
<span class="btn__icon" aria-hidden="true"><svg class="icon"><use href="#i-arrow"/></svg></span> <span class="btn__icon" aria-hidden="true"><svg class="icon"><use href="#i-arrow"/></svg></span>
</a> </a>
<a class="btn btn--ghost btn--ghost-light" href="tel:+4987172617"> <a class="btn btn--ghost btn--ghost-light" href="tel:+491234567890">
<svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg> <svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>
<span class="btn__label">0871&nbsp;72617</span> <span class="btn__label">01234&nbsp;567890</span>
</a> </a>
</div> </div>
</div> </div>
@@ -212,7 +211,7 @@
<div class="container hero__bottom" data-hero-fade> <div class="container hero__bottom" data-hero-fade>
<p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p> <p class="status status--dark" data-status><span class="status__dot" aria-hidden="true"></span><span class="status__text">Mo–Do 7–16:30 Uhr · Fr 7–11:30 Uhr</span></p>
<p class="hero__place">Ahornstraße 112 · Ergolding</p> <p class="hero__place">Musterstraße 1 · Musterstadt</p>
</div> </div>
</section> </section>
@@ -886,7 +885,7 @@
</ul> </ul>
<div class="svc__foot"> <div class="svc__foot">
<a class="link-arrow" href="#kontakt" data-topic="Wartung &amp; Störung">Termin vereinbaren <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a> <a class="link-arrow" href="#kontakt" data-topic="Wartung &amp; Störung">Termin vereinbaren <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a>
<a class="svc__phone" href="tel:+4987172617"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>0871&nbsp;72617</a> <a class="svc__phone" href="tel:+491234567890"><svg class="icon" aria-hidden="true"><use href="#i-phone"/></svg>01234&nbsp;567890</a>
</div> </div>
</div> </div>
<div class="svc__art"> <div class="svc__art">
@@ -1215,14 +1214,14 @@
<header class="section-head section-head--split"> <header class="section-head section-head--split">
<div> <div>
<p class="label" data-reveal>Über uns</p> <p class="label" data-reveal>Über uns</p>
<h2 class="h1" id="about-title" data-reveal>Seit 1985 in Ergolding</h2> <h2 class="h1" id="about-title" data-reveal>Seit 1990 in Musterstadt</h2>
</div> </div>
<p class="lead" data-reveal>Rund 25 Fachleute aus der Region – für Heizung, Bad und Lüftung.</p> <p class="lead" data-reveal>Rund 20 Fachleute aus der Region – für Heizung, Bad und Lüftung.</p>
</header> </header>
<ol class="history" data-reveal> <ol class="history" data-reveal>
<li><span class="history__year">1985</span><p>Richard Olzinger gründet den Betrieb.</p></li> <li><span class="history__year">1990</span><p>Max Mustermann gründet den Betrieb.</p></li>
<li><span class="history__year">2014</span><p>Franz Ramsauer und Robert Straub führen den Betrieb gemeinsam.</p></li> <li><span class="history__year">2015</span><p>Erika Mustermann übernimmt die Geschäftsführung.</p></li>
<li><span class="history__year">Heute</span><p>Schwerpunkt: Wärmepumpe und regenerative Heiztechnik.</p></li> <li><span class="history__year">Heute</span><p>Schwerpunkt: Wärmepumpe und regenerative Heiztechnik.</p></li>
</ol> </ol>
</div> </div>
@@ -1240,13 +1239,13 @@
<p class="job__tag"><svg class="icon" aria-hidden="true"><use href="#i-cap"/></svg>Ausbildung · Start im September</p> <p class="job__tag"><svg class="icon" aria-hidden="true"><use href="#i-cap"/></svg>Ausbildung · Start im September</p>
<h3 class="job__title">Anlagenmechaniker SHK (m/w/d)</h3> <h3 class="job__title">Anlagenmechaniker SHK (m/w/d)</h3>
<p>3,5 Jahre mit echten Projekten – von der Wärmepumpe bis zum Bad.</p> <p>3,5 Jahre mit echten Projekten – von der Wärmepumpe bis zum Bad.</p>
<a class="link-arrow" href="mailto:kontakt@olzinger.de?subject=Bewerbung%20Ausbildung%20Anlagenmechaniker%2Fin%20SHK">Jetzt bewerben <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a> <a class="link-arrow" href="mailto:kontakt@example.com?subject=Bewerbung%20Ausbildung%20Anlagenmechaniker%2Fin%20SHK">Jetzt bewerben <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a>
</article> </article>
<article class="job"> <article class="job">
<p class="job__tag"><svg class="icon" aria-hidden="true"><use href="#i-wrench"/></svg>Fachkräfte · Initiativbewerbung</p> <p class="job__tag"><svg class="icon" aria-hidden="true"><use href="#i-wrench"/></svg>Fachkräfte · Initiativbewerbung</p>
<h3 class="job__title">Anlagenmechaniker, Monteure &amp; Kundendienst (m/w/d)</h3> <h3 class="job__title">Anlagenmechaniker, Monteure &amp; Kundendienst (m/w/d)</h3>
<p>Erfahrung in Heizung, Sanitär oder Lüftung? Dann melde dich gern.</p> <p>Erfahrung in Heizung, Sanitär oder Lüftung? Dann melde dich gern.</p>
<a class="link-arrow" href="mailto:kontakt@olzinger.de?subject=Initiativbewerbung">Jetzt bewerben <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a> <a class="link-arrow" href="mailto:kontakt@example.com?subject=Initiativbewerbung">Jetzt bewerben <svg class="icon" aria-hidden="true"><use href="#i-arrow"/></svg></a>
</article> </article>
</div> </div>
</div> </div>
@@ -1261,23 +1260,23 @@
<ul class="cards" data-reveal> <ul class="cards" data-reveal>
<li> <li>
<a class="ccard" href="tel:+4987172617"> <a class="ccard" href="tel:+491234567890">
<span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-phone"/></svg></span> <span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-phone"/></svg></span>
<span class="ccard__body"><small>Telefon</small><strong>0871&nbsp;72617</strong></span> <span class="ccard__body"><small>Telefon</small><strong>01234&nbsp;567890</strong></span>
<svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg> <svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg>
</a> </a>
</li> </li>
<li> <li>
<a class="ccard" href="mailto:kontakt@olzinger.de"> <a class="ccard" href="mailto:kontakt@example.com">
<span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-mail"/></svg></span> <span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-mail"/></svg></span>
<span class="ccard__body"><small>E-Mail</small><strong>kontakt@olzinger.de</strong></span> <span class="ccard__body"><small>E-Mail</small><strong>kontakt@example.com</strong></span>
<svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg> <svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg>
</a> </a>
</li> </li>
<li> <li>
<a class="ccard" href="https://www.google.com/maps/dir/?api=1&amp;destination=Olzinger+GmbH%2C+Ahornstra%C3%9Fe+112%2C+84030+Ergolding" target="_blank" rel="noopener"> <a class="ccard" href="https://www.google.com/maps/dir/?api=1&amp;destination=Mustermann+Haustechnik+GmbH%2C+Musterstra%C3%9Fe+1%2C+12345+Musterstadt" target="_blank" rel="noopener">
<span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-pin"/></svg></span> <span class="ccard__icon" aria-hidden="true"><svg class="icon"><use href="#i-pin"/></svg></span>
<span class="ccard__body"><small>Adresse · Route planen</small><strong>Ahornstraße 112, 84030&nbsp;Ergolding</strong></span> <span class="ccard__body"><small>Adresse · Route planen</small><strong>Musterstraße 1, 12345&nbsp;Musterstadt</strong></span>
<svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg> <svg class="icon ccard__go" aria-hidden="true"><use href="#i-arrow-ur"/></svg>
</a> </a>
</li> </li>
@@ -1369,12 +1368,12 @@
<div class="container"> <div class="container">
<div class="footer__grid"> <div class="footer__grid">
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Olzinger GmbH</h2> <h2 class="footer__h">Mustermann Haustechnik GmbH</h2>
<address>Ahornstraße 112<br>84030 Ergolding</address> <address>Musterstraße 1<br>12345 Musterstadt</address>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Kontakt</h2> <h2 class="footer__h">Kontakt</h2>
<p><a href="tel:+4987172617">Tel.&nbsp;0871&nbsp;72617</a><br>Fax&nbsp;0871&nbsp;74963<br><a href="mailto:kontakt@olzinger.de">kontakt@olzinger.de</a></p> <p><a href="tel:+491234567890">Tel.&nbsp;01234&nbsp;567890</a><br>Fax&nbsp;01234&nbsp;567891<br><a href="mailto:kontakt@example.com">kontakt@example.com</a></p>
</div> </div>
<div class="footer__col"> <div class="footer__col">
<h2 class="footer__h">Öffnungszeiten</h2> <h2 class="footer__h">Öffnungszeiten</h2>
@@ -1393,7 +1392,7 @@
</div> </div>
<div class="footer__bottom"> <div class="footer__bottom">
<p>© <span data-current-year>2026</span> Olzinger GmbH</p> <p>© <span data-current-year>2026</span> Mustermann Haustechnik GmbH</p>
<ul> <ul>
<li><a href="impressum.html">Impressum</a></li> <li><a href="impressum.html">Impressum</a></li>
<li><a href="datenschutz.html">Datenschutz</a></li> <li><a href="datenschutz.html">Datenschutz</a></li>
+7 -7
View File
@@ -1,6 +1,6 @@
<?php <?php
/** /**
* Olzinger Haustechnik – Versand des Kontaktformulars * HSK-Vorlage – Versand des Kontaktformulars
* *
* Wird per fetch() aus assets/js/contact.js aufgerufen und antwortet mit JSON. * Wird per fetch() aus assets/js/contact.js aufgerufen und antwortet mit JSON.
* Ist PHP auf dem Server nicht verfügbar, öffnet das Formular automatisch das * Ist PHP auf dem Server nicht verfügbar, öffnet das Formular automatisch das
@@ -13,9 +13,9 @@
declare(strict_types=1); declare(strict_types=1);
const RECIPIENT = 'kontakt@olzinger.de'; const RECIPIENT = 'kontakt@example.com';
// Absender sollte eine Adresse der eigenen Domain sein (SPF/DKIM), sonst landen Mails im Spam. // Absender sollte eine Adresse der eigenen Domain sein (SPF/DKIM), sonst landen Mails im Spam.
const SENDER = 'kontakt@olzinger.de'; const SENDER = 'kontakt@example.com';
const MIN_SECONDS = 3; const MIN_SECONDS = 3;
date_default_timezone_set('Europe/Berlin'); date_default_timezone_set('Europe/Berlin');
@@ -85,9 +85,9 @@ if ($errors) {
respond(422, ['ok' => false, 'errors' => $errors]); respond(422, ['ok' => false, 'errors' => $errors]);
} }
$subject = 'Anfrage über olzinger.de' . ($topic !== '' ? ' – ' . $topic : ''); $subject = 'Anfrage über example.com' . ($topic !== '' ? ' – ' . $topic : '');
$body = implode("\n", [ $body = implode("\n", [
'Neue Anfrage über das Kontaktformular auf olzinger.de', 'Neue Anfrage über das Kontaktformular auf example.com',
'', '',
'Anliegen: ' . ($topic !== '' ? $topic : '–'), 'Anliegen: ' . ($topic !== '' ? $topic : '–'),
'Name: ' . $name, 'Name: ' . $name,
@@ -103,12 +103,12 @@ $body = implode("\n", [
]); ]);
$headers = implode("\r\n", [ $headers = implode("\r\n", [
'From: Website Olzinger <' . SENDER . '>', 'From: Website Mustermann <' . SENDER . '>',
'Reply-To: ' . $email, 'Reply-To: ' . $email,
'MIME-Version: 1.0', 'MIME-Version: 1.0',
'Content-Type: text/plain; charset=UTF-8', 'Content-Type: text/plain; charset=UTF-8',
'Content-Transfer-Encoding: 8bit', 'Content-Transfer-Encoding: 8bit',
'X-Mailer: olzinger.de', 'X-Mailer: example.com',
]); ]);
$encodedSubject = '=?UTF-8?B?' . base64_encode($subject) . '?='; $encodedSubject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
+1 -1
View File
@@ -1,4 +1,4 @@
User-agent: * User-agent: *
Allow: / Allow: /
Sitemap: https://www.olzinger.de/sitemap.xml Sitemap: https://www.example.com/sitemap.xml
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "Olzinger Haustechnik", "name": "Mustermann Haustechnik",
"short_name": "Olzinger", "short_name": "Mustermann",
"icons": [ "icons": [
{ "src": "assets/img/favicon.svg", "sizes": "any", "type": "image/svg+xml" }, { "src": "assets/img/favicon.svg", "sizes": "any", "type": "image/svg+xml" },
{ "src": "assets/img/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" } { "src": "assets/img/apple-touch-icon.png", "sizes": "180x180", "type": "image/png" }
+6 -6
View File
@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://www.olzinger.de/</loc> <loc>https://www.example.com/</loc>
<lastmod>2026-10-03</lastmod> <lastmod>2026-10-04</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
<loc>https://www.olzinger.de/impressum.html</loc> <loc>https://www.example.com/impressum.html</loc>
<lastmod>2026-10-03</lastmod> <lastmod>2026-10-04</lastmod>
<priority>0.2</priority> <priority>0.2</priority>
</url> </url>
<url> <url>
<loc>https://www.olzinger.de/datenschutz.html</loc> <loc>https://www.example.com/datenschutz.html</loc>
<lastmod>2026-10-03</lastmod> <lastmod>2026-10-04</lastmod>
<priority>0.2</priority> <priority>0.2</priority>
</url> </url>
</urlset> </urlset>
+5 -5
View File
@@ -15,7 +15,7 @@
.og__title span { display: block; } .og__title span { display: block; }
.og__title i { display: inline-block; width: .15em; height: .15em; margin-left: .045em; border-radius: 50%; } .og__title i { display: inline-block; width: .15em; height: .15em; margin-left: .045em; border-radius: 50%; }
.og__sub { position: absolute; left: 64px; bottom: 58px; margin: 0; font-size: 26px; font-weight: 500; color: rgba(243,239,232,.86); } .og__sub { position: absolute; left: 64px; bottom: 58px; margin: 0; font-size: 26px; font-weight: 500; color: rgba(243,239,232,.86); }
.og__url { position: absolute; right: 64px; bottom: 58px; margin: 0; font-family: var(--font-mono); font-size: 18px; color: rgba(243,239,232,.7); } .og__url { position: absolute; right: 64px; bottom: 58px; margin: 0; font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, "DejaVu Sans Mono", monospace; font-size: 18px; color: rgba(243,239,232,.7); }
</style> </style>
</head> </head>
<body> <body>
@@ -27,19 +27,19 @@
<path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/> <path d="M11.97 31.47A14 14 0 1 1 28.03 31.47" fill="none" stroke="url(#g-logo)" stroke-width="5.5" stroke-linecap="round"/>
<circle cx="20" cy="20" r="3.4" fill="currentColor"/> <circle cx="20" cy="20" r="3.4" fill="currentColor"/>
</svg> </svg>
<span class="logo__text"><span class="logo__word" style="font-size:28px">Olzinger</span><span class="logo__sub" style="font-size:14px">Haustechnik</span></span> <span class="logo__text"><span class="logo__word" style="font-size:28px">Mustermann</span><span class="logo__sub" style="font-size:14px">Haustechnik</span></span>
</a> </a>
<h1 class="og__title"> <h1 class="og__title">
<span>Wärme<i style="background:#FF6A2B;box-shadow:0 0 .28em rgba(255,106,43,.75)"></i></span> <span>Wärme<i style="background:#FF6A2B;box-shadow:0 0 .28em rgba(255,106,43,.75)"></i></span>
<span>Wasser<i style="background:#2E9BEF;box-shadow:0 0 .28em rgba(46,155,239,.75)"></i></span> <span>Wasser<i style="background:#2E9BEF;box-shadow:0 0 .28em rgba(46,155,239,.75)"></i></span>
<span>Luft<i style="background:#3CCFC0;box-shadow:0 0 .28em rgba(60,207,192,.7)"></i></span> <span>Luft<i style="background:#3CCFC0;box-shadow:0 0 .28em rgba(60,207,192,.7)"></i></span>
</h1> </h1>
<p class="og__sub">Heizung · Sanitär · Lüftung · Regenerativ – Ergolding bei Landshut, seit 1985</p> <p class="og__sub">Heizung · Sanitär · Lüftung · Regenerativ – Musterstadt, seit 1990</p>
<p class="og__url">olzinger.de</p> <p class="og__url">example.com</p>
</div> </div>
<script src="../assets/js/thermal.js"></script> <script src="../assets/js/thermal.js"></script>
<script> <script>
var t = OlzThermal.init(document.querySelector('[data-thermal]'), { hero: document.getElementById('og'), reduceMotion: false }); var t = HskThermal.init(document.querySelector('[data-thermal]'), { hero: document.getElementById('og'), reduceMotion: false });
if (t) t.heatUp(); if (t) t.heatUp();
</script> </script>
</body> </body>