Prüfdurchgang: Buchungslinks, alte Adressen, Tablet/Handy-Layout
- Buchungslinks direkt auf Portal-IDs; Ernährungsberatung auf id=107, Kaufberatung entfernt (im Portal gibt es keine Seite dafür) - .htaccess: alte WordPress-Adressen per 301 auf die neuen Seiten - Tablet bis 980 px: Logo-Siegel über den Kacheln statt darauf - Handy: lange Wörter werden nicht mehr abgeschnitten, Pfeile überdecken keinen Text mehr, „Buchen“ neben dem Menü-Knopf - Dreier-Karten: Überschriften auf einer Linie (Subgrid) - Menü schließt mit Escape und Tipp daneben; sichtbarer Fokusrahmen - Startseite Handy/Tablet: Kopfleiste, sobald das Siegel weg ist - 404: Pfade ab der Wurzel statt <base>, Sprunglink bleibt auf der Seite Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d154ea13c2
commit
fef4ac8eae
14 files changed
+152
-97
No files matched your search
@@ -1,6 +1,20 @@
|
||||
# Für Apache-Webspace (z. B. IONOS, Strato, All-Inkl). Auf anderen Servern wird die Datei ignoriert.
|
||||
ErrorDocument 404 /404.html
|
||||
|
||||
# Adressen der alten WordPress-Seite auf die neuen Seiten umleiten
|
||||
# (Google-Treffer, Lesezeichen und die Links im PetWorkers-Portal auf /impressum/ und /kontakt/)
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
RewriteRule ^(hundetraining|einzeltraining-hausbesuch|gruppenstunden-aussentraining|preise-hundetraining)/?$ /hundeschule.html [R=301,L]
|
||||
RewriteRule ^(einfache-rationspruefung|beratungsablauf|erst-anamnesegespraech|futterplaene|welpe-zum-junghund|welpe-und-junghund|erwachsener-hund|seniorenplan|der-seniorenplan|erkrankter-hund|aufbau-reduktionsplan|urlaubsplan-2|der-urlaubsplan)/?$ /ernaehrung.html [R=301,L]
|
||||
RewriteRule ^category/futterplan(/.*)?$ /ernaehrung.html [R=301,L]
|
||||
RewriteRule ^(ueber-mich|qualifikationen)/?$ /ueber-mich.html [R=301,L]
|
||||
RewriteRule ^(shop|coming-soon)/?$ /shop.html [R=301,L]
|
||||
RewriteRule ^impressum/?$ /impressum.html [R=301,L]
|
||||
RewriteRule ^datenschutz/?$ /datenschutz.html [R=301,L]
|
||||
RewriteRule ^kontakt/?$ /#kontakt [R=301,NE,L]
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/html text/css application/javascript image/svg+xml
|
||||
</IfModule>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<base href="/">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Seite nicht gefunden – Schmacko Napf</title>
|
||||
@@ -16,23 +15,23 @@
|
||||
<meta property="og:description" content="Diese Seite gibt es leider nicht.">
|
||||
<meta property="og:url" content="https://schmacko-napf.de/404.html">
|
||||
<meta property="og:image" content="https://schmacko-napf.de/assets/img/vorschau.jpg">
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="icon" href="/assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="preload" href="/assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="/assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
<header class="site-header">
|
||||
<div class="header-inner">
|
||||
<a class="brand" href="index.html" aria-label="Schmacko Napf – Startseite"><img src="assets/img/logo.webp" alt="Schmacko Napf & Hundetraining by Katha" width="68" height="68"></a>
|
||||
<a class="brand" href="/index.html" aria-label="Schmacko Napf – Startseite"><img src="/assets/img/logo.webp" alt="Schmacko Napf & Hundetraining by Katha" width="68" height="68"></a>
|
||||
<nav class="nav" aria-label="Hauptmenü">
|
||||
<a href="hundeschule.html">Hundetraining</a>
|
||||
<a href="ernaehrung.html">Ernährung</a>
|
||||
<a href="shop.html">Shop</a>
|
||||
<a href="transportboxen.html">Transportboxen</a>
|
||||
<a href="ueber-mich.html">Über mich</a>
|
||||
<a href="index.html#kontakt">Kontakt</a>
|
||||
<a href="/hundeschule.html">Hundetraining</a>
|
||||
<a href="/ernaehrung.html">Ernährung</a>
|
||||
<a href="/shop.html">Shop</a>
|
||||
<a href="/transportboxen.html">Transportboxen</a>
|
||||
<a href="/ueber-mich.html">Über mich</a>
|
||||
<a href="/index.html#kontakt">Kontakt</a>
|
||||
</nav>
|
||||
<a class="book-btn" href="https://schmacko-napf.petworkers.app/" target="_blank" rel="noopener"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3.5" y="5" width="17" height="15" rx="2.5"/><path d="M3.5 10h17M8 3v4M16 3v4"/></svg><span class="book-long">Termin buchen</span><span class="book-short" aria-hidden="true">Buchen</span></a>
|
||||
<button class="burger" type="button" aria-label="Menü öffnen" aria-expanded="false"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16"/></svg></button>
|
||||
@@ -43,26 +42,26 @@
|
||||
<span class="kicker">Fehler 404</span>
|
||||
<h1 class="display">Hier ist leider<br>nichts zu finden.</h1>
|
||||
<p class="big">Vielleicht hat ein Hund die Seite vergraben. Über die Startseite findest du alles wieder.</p>
|
||||
<div class="btn-row"><a class="btn btn--sage" href="index.html">Zur Startseite <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div>
|
||||
<div class="btn-row"><a class="btn btn--sage" href="/index.html">Zur Startseite <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></a></div>
|
||||
</div>
|
||||
<footer class="site-footer">
|
||||
<div class="footer-brand">
|
||||
<a class="footer-logo" href="index.html"><img src="assets/img/logo.webp" alt="Schmacko Napf & Hundetraining by Katha" width="88" height="88" loading="lazy"></a>
|
||||
<a class="footer-logo" href="/index.html"><img src="/assets/img/logo.webp" alt="Schmacko Napf & Hundetraining by Katha" width="88" height="88" loading="lazy"></a>
|
||||
<span>Ernährung, Gesundheit und Training –<br>mit Herz und Verstand.</span>
|
||||
<img class="footer-cert" src="assets/img/gh-siegel.webp" alt="Zertifiziert nach G&H Tierernährung – Gesund gefüttert Heidi Herrmann" width="480" height="329" loading="lazy">
|
||||
<img class="footer-cert" src="/assets/img/gh-siegel.webp" alt="Zertifiziert nach G&H Tierernährung – Gesund gefüttert Heidi Herrmann" width="480" height="329" loading="lazy">
|
||||
</div>
|
||||
<nav class="footer-links" aria-label="Footer">
|
||||
<a href="hundeschule.html">Hundetraining</a>
|
||||
<a href="ernaehrung.html">Ernährung</a>
|
||||
<a href="shop.html">Shop</a>
|
||||
<a href="transportboxen.html">Transportboxen</a>
|
||||
<a href="ueber-mich.html">Über mich</a>
|
||||
<a href="impressum.html">Impressum</a>
|
||||
<a href="datenschutz.html">Datenschutz</a>
|
||||
<a href="/hundeschule.html">Hundetraining</a>
|
||||
<a href="/ernaehrung.html">Ernährung</a>
|
||||
<a href="/shop.html">Shop</a>
|
||||
<a href="/transportboxen.html">Transportboxen</a>
|
||||
<a href="/ueber-mich.html">Über mich</a>
|
||||
<a href="/impressum.html">Impressum</a>
|
||||
<a href="/datenschutz.html">Datenschutz</a>
|
||||
</nav>
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="/assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -24,8 +24,14 @@ Neue Website für Katha (bisher WordPress auf `schmacko-napf.de`). Statisches HT
|
||||
|
||||
Alle „Termin buchen“-Knöpfe führen zu Kathas Buchungsportal **PetWorkers** (`https://schmacko-napf.petworkers.app`): Kopfleiste, Kontakt-Fläche, Buchungs-Fläche auf Start/Hundetraining/Ernährung und die Buchen-Knöpfe in den Trainings-Flächen. Die einzelnen Links stehen zentral in `BOOK` in `tools/build_pages.py`.
|
||||
|
||||
Verlinkt werden die Portal-Seiten direkt über ihre ID (`index.php?id=…`). Die Adressen `seite.php?name=ernaehrungsberatung` und `…name=kaufberatung` leiten im Portal nur auf die Startseite um. Für die Kaufberatung gibt es im Portal noch keine eigene Seite, deshalb fehlt sie in den Buchungs-Flächen. Sobald Katha eine anlegt, in `BOOK` ergänzen.
|
||||
|
||||
Die alte Seite verlinkte für das Ernährungs-Erstgespräch teilweise auch Microsoft Bookings – die neue Seite nutzt einheitlich PetWorkers.
|
||||
|
||||
## Alte Adressen
|
||||
|
||||
`.htaccess` leitet die Adressen der alten WordPress-Seite (z. B. `/hundetraining/`, `/futterplaene/`, `/impressum/`, `/kontakt/`) per 301 auf die neuen Seiten um. So landen Google-Treffer, Lesezeichen und die Links im PetWorkers-Portal nicht auf der Fehlerseite.
|
||||
|
||||
## Lokal ansehen
|
||||
|
||||
```bash
|
||||
@@ -53,3 +59,4 @@ Alles außer `tools/`, `README.md` und `.git` in das Hauptverzeichnis des Webspa
|
||||
- Texte für Shop und Transportboxen mit Katha abstimmen (aktuell allgemein formuliert).
|
||||
- Impressum und Datenschutz rechtlich prüfen lassen; im Datenschutz ggf. den Hosting-Anbieter namentlich nennen.
|
||||
- Nutzungsrecht der Fotos von KK-Fotografie (Steffi Biller) für die neue Seite bestätigen.
|
||||
- Im PetWorkers-Portal (Katha): Die Knöpfe „Ernährungsberatung“ und „Kaufberatung“ auf der Portal-Startseite führen ins Leere. Der Text der Ernährungs-Seite (`id=107`) spricht noch von „DogWorkers“ (Vorlagentext).
|
||||
+40
-18
@@ -46,7 +46,7 @@ body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
a { color: inherit; text-decoration: none; }
|
||||
img { display: block; max-width: 100%; }
|
||||
img { display: block; max-width: 100%; height: auto; }
|
||||
h1, h2, h3 { font-weight: 400; line-height: 1.05; letter-spacing: -.025em; margin: 0; }
|
||||
p { margin: 0; }
|
||||
svg { flex: none; }
|
||||
@@ -60,6 +60,10 @@ svg { flex: none; }
|
||||
}
|
||||
.skip:focus { transform: none; }
|
||||
|
||||
/* Tastatur-Fokus: dunkler Ring auf hellem Grund, Salbei auf dunklen Flächen */
|
||||
:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; }
|
||||
.panel--ink :focus-visible, .panel--photo :focus-visible, .site-footer :focus-visible { outline-color: var(--sage); }
|
||||
|
||||
/* ===== Header: Logo und Menü als zwei schwebende Elemente ===== */
|
||||
.site-header {
|
||||
position: sticky; top: 0; z-index: 50;
|
||||
@@ -239,7 +243,6 @@ svg { flex: none; }
|
||||
.tile:hover .tile-arrow { background: var(--sage); border-color: var(--sage); color: var(--ink); }
|
||||
.tile:hover .tile-arrow svg { transform: rotate(-45deg); }
|
||||
}
|
||||
.tile:focus-visible, .btn:focus-visible, .nav a:focus-visible { outline: 3px solid var(--sage); outline-offset: 3px; }
|
||||
|
||||
/* Logo-Siegel in der Mitte */
|
||||
.seal {
|
||||
@@ -375,6 +378,8 @@ a.panel:hover .panel-arrow { background: var(--sage); border-color: var(--sage);
|
||||
a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
|
||||
.panel-arrow--ink { background: var(--ink); border-color: var(--ink); }
|
||||
/* Steht die Überschrift oben (Handy), darf sie nicht unter den Pfeil laufen */
|
||||
.panel-arrow--ink ~ .kicker { padding-right: 64px; }
|
||||
|
||||
/* Kurze Fakten als Pillen */
|
||||
.facts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 30px; }
|
||||
@@ -461,6 +466,14 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.price-rows small { display: block; font-size: 1.05rem; color: var(--muted); margin-top: 6px; letter-spacing: 0; }
|
||||
.price-rows strong { font-weight: 400; white-space: nowrap; font-size: clamp(1.6rem, 2.6vw, 2.4rem); }
|
||||
|
||||
/* Dreier-Reihen: Überschriften, Texte und Preise auf einer Linie, auch wenn ein Text kürzer ist */
|
||||
@media (min-width: 981px) {
|
||||
.row--3 { grid-template-rows: 1fr auto auto; min-height: min(62svh, 620px); } /* Höhe wie .panel--mid – im Subgrid zählt die der Flächen nicht */
|
||||
.row--3 > .panel { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 0; justify-content: stretch; }
|
||||
.row--3 > .panel > * { align-self: start; }
|
||||
.row--3 > .panel > .kicker { align-self: end; }
|
||||
}
|
||||
|
||||
/* Icon in Flächen */
|
||||
.panel-icon {
|
||||
width: 76px; height: 76px;
|
||||
@@ -490,7 +503,7 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.book-links a:hover { background: var(--ink); color: var(--bg); }
|
||||
.book-links svg { width: 22px; height: 22px; transition: transform .4s var(--ease); }
|
||||
.book-links a:hover svg { transform: translate(2px, -2px); }
|
||||
.book-links a:only-child { grid-column: 1 / -1; }
|
||||
.book-links a:last-child:nth-child(odd) { grid-column: 1 / -1; }
|
||||
|
||||
/* G&H-Zertifikat */
|
||||
.cert { display: block; width: clamp(150px, 13vw, 200px); height: auto; margin-top: 36px; }
|
||||
@@ -549,18 +562,28 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.d1 { transition-delay: .1s; }
|
||||
.d2 { transition-delay: .2s; }
|
||||
|
||||
.tile:focus-visible, .btn:focus-visible, .nav a:focus-visible, a.panel:focus-visible { outline: 3px solid var(--sage); outline-offset: 3px; }
|
||||
|
||||
/* ===== Responsive ===== */
|
||||
@media (max-width: 1100px) {
|
||||
.steps { grid-template-columns: repeat(2, 1fr); row-gap: 34px; }
|
||||
.nav a { padding: 10px 12px; font-size: 1rem; }
|
||||
}
|
||||
@media (max-width: 980px) {
|
||||
.header-inner { gap: 10px; }
|
||||
.nav { display: none; }
|
||||
.burger { display: grid; margin-left: 10px; }
|
||||
.burger { display: grid; margin-left: 0; }
|
||||
.book-btn { margin-left: auto; }
|
||||
.booking { grid-template-columns: 1fr; align-items: start; }
|
||||
.booking { grid-template-columns: minmax(0, 1fr); align-items: start; }
|
||||
/* Logo-Siegel über den Kacheln – mittig wäre es den Beschriftungen im Weg */
|
||||
.tiles { grid-template-rows: auto 1fr 1fr; }
|
||||
.seal {
|
||||
position: static;
|
||||
grid-column: 1 / -1;
|
||||
width: 190px;
|
||||
margin: 0 auto;
|
||||
transform: scale(.9);
|
||||
}
|
||||
@keyframes seal { to { opacity: 1; transform: none; } }
|
||||
.seal-joint { display: none; }
|
||||
.menu-open .nav {
|
||||
display: flex; flex-direction: column; gap: 4px;
|
||||
position: fixed; top: 88px; left: var(--pad); right: var(--pad);
|
||||
@@ -583,7 +606,7 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.header-inner { height: 76px; }
|
||||
.brand { width: 62px; height: 62px; }
|
||||
.book-btn { height: 54px; padding: 0 18px; font-size: 1rem; }
|
||||
.book-links { grid-template-columns: 1fr; }
|
||||
.book-links { grid-template-columns: minmax(0, 1fr); }
|
||||
.footer-cert { height: 72px; }
|
||||
.brand img { width: 58px; height: 58px; }
|
||||
.burger { width: 54px; height: 54px; }
|
||||
@@ -592,15 +615,10 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.tiles { grid-template-columns: 1fr; grid-template-rows: none; gap: 12px; }
|
||||
.tile { height: 44svh; min-height: 260px; }
|
||||
.tile:nth-of-type(even) .tile-foot { flex-direction: row; text-align: left; }
|
||||
.tile-arrow { width: 50px; height: 50px; }
|
||||
.seal {
|
||||
position: static;
|
||||
width: 210px;
|
||||
margin: 4px auto -6px;
|
||||
transform: scale(.9);
|
||||
}
|
||||
@keyframes seal { to { opacity: 1; transform: none; } }
|
||||
.seal-joint { display: none; }
|
||||
.tile-foot { gap: 12px; }
|
||||
.tile-label { font-size: clamp(1.4rem, 6.6vw, 1.7rem); }
|
||||
.tile-arrow { width: 46px; height: 46px; }
|
||||
.seal { width: 210px; margin: 4px auto -6px; }
|
||||
.scroll-hint { display: none; }
|
||||
.mosaic { gap: 12px; padding: 0 16px 16px; }
|
||||
.row { gap: 12px; }
|
||||
@@ -610,6 +628,10 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.contact-links a { padding: 18px 18px; }
|
||||
.page-hero { min-height: calc(100svh - 76px - 16px); }
|
||||
.footer-brand { flex-direction: column; align-items: flex-start; }
|
||||
/* lange Wörter („Transportboxen“, „Konsequenz“) passen auch auf schmale Handys */
|
||||
.page-hero h1 { font-size: min(3.2rem, 11vw); }
|
||||
.display { font-size: min(2.8rem, 12.5vw); }
|
||||
.words li { font-size: min(2.4rem, 10.5vw); }
|
||||
}
|
||||
|
||||
.book-short { display: none; }
|
||||
@@ -627,6 +649,6 @@ a.panel:hover .panel-arrow svg { transform: rotate(-45deg); }
|
||||
.scroll-hint { animation: none; }
|
||||
.reveal { opacity: 1; transform: none; transition: none; }
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) and (max-width: 767px) {
|
||||
@media (prefers-reduced-motion: reduce) and (max-width: 980px) {
|
||||
.seal { transform: none; }
|
||||
}
|
||||
+22
-12
@@ -1,31 +1,41 @@
|
||||
(() => {
|
||||
const body = document.body;
|
||||
|
||||
// Mobiles Menü
|
||||
// Mobiles Menü – schließt auch mit Escape oder Tipp daneben
|
||||
const burger = document.querySelector('.burger');
|
||||
if (burger) {
|
||||
burger.addEventListener('click', () => {
|
||||
const open = body.classList.toggle('menu-open');
|
||||
const setMenu = open => {
|
||||
body.classList.toggle('menu-open', open);
|
||||
burger.setAttribute('aria-expanded', open);
|
||||
burger.setAttribute('aria-label', open ? 'Menü schließen' : 'Menü öffnen');
|
||||
};
|
||||
burger.addEventListener('click', () => setMenu(!body.classList.contains('menu-open')));
|
||||
document.querySelectorAll('.nav a').forEach(a => a.addEventListener('click', () => setMenu(false)));
|
||||
document.addEventListener('keydown', e => {
|
||||
if (e.key === 'Escape' && body.classList.contains('menu-open')) { setMenu(false); burger.focus(); }
|
||||
});
|
||||
document.addEventListener('click', e => {
|
||||
if (body.classList.contains('menu-open') && !e.target.closest('.nav, .burger')) setMenu(false);
|
||||
});
|
||||
document.querySelectorAll('.nav a').forEach(a =>
|
||||
a.addEventListener('click', () => {
|
||||
body.classList.remove('menu-open');
|
||||
burger.setAttribute('aria-expanded', 'false');
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
// Startseite: Header einblenden, sobald der Hero verlassen wird
|
||||
// Startseite: Header einblenden, sobald der Hero verlassen wird. Auf Handy/Tablet steht das
|
||||
// Siegel über den Kacheln – dort kommt der Header schon, sobald das Siegel aus dem Bild ist.
|
||||
const hero = document.querySelector('.hero');
|
||||
const seal = document.querySelector('.seal');
|
||||
if (body.classList.contains('is-home') && hero) {
|
||||
new IntersectionObserver(([e]) => body.classList.toggle('scrolled', !e.isIntersecting), {
|
||||
const past = { hero: false, seal: false };
|
||||
const update = () => body.classList.toggle('scrolled', past.hero || past.seal);
|
||||
new IntersectionObserver(([e]) => { past.hero = !e.isIntersecting; update(); }, {
|
||||
rootMargin: '-120px 0px 0px 0px'
|
||||
}).observe(hero);
|
||||
if (seal) new IntersectionObserver(([e]) => {
|
||||
past.seal = !e.isIntersecting && e.boundingClientRect.top < 0 && getComputedStyle(seal).position === 'static';
|
||||
update();
|
||||
}).observe(seal);
|
||||
}
|
||||
|
||||
// Ring um das Logo-Siegel: Kreis + die vier Kachel-Lücken, Übergänge mit Radius f abgerundet
|
||||
const seal = document.querySelector('.seal');
|
||||
const joint = document.querySelector('.seal-joint');
|
||||
if (seal && joint) {
|
||||
const drawJoint = () => {
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -86,6 +86,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+4
-4
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -39,7 +39,7 @@
|
||||
<main class="mosaic" id="inhalt">
|
||||
<section class="panel panel--photo page-hero">
|
||||
<img src="assets/img/futternapf.webp" srcset="assets/img/futternapf-900.webp 900w, assets/img/futternapf.webp 1800w" sizes="100vw" alt="Hund schnuppert an einem Napf mit Trockenfutter">
|
||||
<span class="kicker">Ernährungs- & Gesundheitsberatung</span>
|
||||
<span class="kicker">Ernährungs- & Gesundheits­beratung</span>
|
||||
<h1>Fürsorge<br>in Napfform.</h1>
|
||||
<p class="big">Individuelle Futterpläne – gesund, sensibel oder mit Diagnose.</p>
|
||||
</section>
|
||||
@@ -91,7 +91,7 @@
|
||||
<p class="big">Erstgespräch und Futterplan direkt online buchen – vor Ort, am Telefon oder online.</p>
|
||||
</div>
|
||||
<div class="book-links">
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=ernaehrungsberatung" target="_blank" rel="noopener"><span>Ernährungsberatung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=107" target="_blank" rel="noopener"><span>Ernährungs­beratung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -126,6 +126,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+6
-7
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -50,7 +50,7 @@
|
||||
<h2 class="title">Individuell.<br>Bei dir zu Hause.</h2>
|
||||
<p class="big">Für Grundgehorsam, Unsicherheit, Leinenführigkeit oder einen neuen Hund im Haus.</p>
|
||||
<div class="price-big"><strong>60 €</strong><span>pro Stunde · nach dem Erstgespräch (120 €, ca. 2 Std.)</span></div>
|
||||
<div class="btn-row"><a class="btn btn--ink" href="https://schmacko-napf.petworkers.app/seite.php?name=einzelcoaching&id=11&sysname=coaching" target="_blank" rel="noopener">Einzelcoaching buchen <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a></div>
|
||||
<div class="btn-row"><a class="btn btn--ink" href="https://schmacko-napf.petworkers.app/index.php?id=11" target="_blank" rel="noopener">Einzelcoaching buchen <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a></div>
|
||||
</div>
|
||||
<div class="panel panel--photo plain reveal d1"><img src="assets/img/hund-wald.webp" srcset="assets/img/hund-wald-900.webp 900w, assets/img/hund-wald.webp 1417w" sizes="(max-width: 980px) 100vw, 55vw" alt="Schwarze Schäferhündin steht aufmerksam im Wald" loading="lazy"></div>
|
||||
</div>
|
||||
@@ -63,7 +63,7 @@
|
||||
<p class="big">In der Stadt, im Grünen, in Geschäften – mit max. 6 Mensch-Hund-Teams.</p>
|
||||
<div class="price-big"><strong>18 €</strong><span>pro Mensch-Hund-Team</span></div>
|
||||
<div class="btn-row">
|
||||
<a class="btn btn--sage" href="https://schmacko-napf.petworkers.app/seite.php?name=gruppenstunden&id=12&sysname=groups" target="_blank" rel="noopener">Gruppenstunde buchen <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a class="btn btn--sage" href="https://schmacko-napf.petworkers.app/index.php?id=12" target="_blank" rel="noopener">Gruppenstunde buchen <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a class="btn btn--line" href="https://schmacko-napf.petworkers.app/index.php?view=kalender" target="_blank" rel="noopener">Stundenplan <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -98,10 +98,9 @@
|
||||
<p class="big">Freie Termine, Kurse und der Stundenplan – direkt in meinem Buchungsportal.</p>
|
||||
</div>
|
||||
<div class="book-links">
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=einzelcoaching&id=11&sysname=coaching" target="_blank" rel="noopener"><span>Einzelcoaching</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=gruppenstunden&id=12&sysname=groups" target="_blank" rel="noopener"><span>Gruppenstunden</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=11" target="_blank" rel="noopener"><span>Einzelcoaching</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=12" target="_blank" rel="noopener"><span>Gruppenstunden</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=13" target="_blank" rel="noopener"><span>Kurse & Workshops</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=kaufberatung" target="_blank" rel="noopener"><span>Kaufberatung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?view=kalender" target="_blank" rel="noopener"><span>Stundenplan</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -137,6 +136,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+3
-3
@@ -18,7 +18,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -46,7 +46,7 @@
|
||||
<p><b>Kontakt</b>Telefon: <a href="tel:+4917656932942">+49 176 569 329 42</a><br>E-Mail: <a href="mailto:info@schmacko-napf.de">info@schmacko-napf.de</a></p>
|
||||
<p><b>Erlaubnis und Aufsichtsbehörde</b>Erlaubnis zur gewerbsmäßigen Ausbildung von Hunden für Dritte nach § 11 Abs. 1 Nr. 8 f TierSchG, erteilt im Oktober 2024 durch das Veterinäramt Landshut.</p>
|
||||
<p><b>Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV</b>Katharina Schulz, Anschrift wie oben</p>
|
||||
<p><b>Verbraucherstreitbeilegung</b>Ich bin nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.</p>
|
||||
<p><b>Verbraucher­streit­beilegung</b>Ich bin nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.</p>
|
||||
<p><b>Bildnachweis</b>Fotos von Katha und ihren Hunden: Steffi Biller, KK-Fotografie. Weitere Bilder: Unsplash.</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -68,6 +68,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+7
-8
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body class="is-home">
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -50,7 +50,7 @@
|
||||
<a class="tile" href="ernaehrung.html">
|
||||
<img src="assets/img/futternapf.webp" srcset="assets/img/futternapf-900.webp 900w, assets/img/futternapf.webp 1800w" sizes="(max-width: 767px) 100vw, 50vw" alt="Hund schnuppert an einem Napf mit Trockenfutter">
|
||||
<span class="tile-foot">
|
||||
<span class="tile-label">Ernährungsberatung</span>
|
||||
<span class="tile-label">Ernährungs­beratung</span>
|
||||
<span class="tile-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
</span>
|
||||
</a>
|
||||
@@ -104,7 +104,7 @@
|
||||
<div class="panel panel--sage plate-panel reveal"><img src="assets/img/barf-teller.webp" alt="Teller mit frischem Fleisch, Gemüse und Obst für die Rohfütterung" width="900" height="900" loading="lazy"></div>
|
||||
<a class="panel panel--cream reveal d1" href="ernaehrung.html">
|
||||
<span class="panel-arrow panel-arrow--ink"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></span>
|
||||
<span class="kicker">Ernährungsberatung</span>
|
||||
<span class="kicker">Ernährungs­beratung</span>
|
||||
<h2 class="display">Gesund<br>gefüttert.</h2>
|
||||
<p class="big">Individuelle Futterpläne – für jedes Alter, auch bei Magen-Darm- oder Pankreas-Problemen.</p>
|
||||
<div class="facts"><span class="fact">BARF</span><span class="fact">Koch-BARF</span><span class="fact">Nass- & Trockenfutter</span></div>
|
||||
@@ -149,11 +149,10 @@
|
||||
<p class="big">Freie Termine, Kurse und der Stundenplan – direkt in meinem Buchungsportal.</p>
|
||||
</div>
|
||||
<div class="book-links">
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=einzelcoaching&id=11&sysname=coaching" target="_blank" rel="noopener"><span>Einzelcoaching</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=gruppenstunden&id=12&sysname=groups" target="_blank" rel="noopener"><span>Gruppenstunden</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=11" target="_blank" rel="noopener"><span>Einzelcoaching</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=12" target="_blank" rel="noopener"><span>Gruppenstunden</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=13" target="_blank" rel="noopener"><span>Kurse & Workshops</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=ernaehrungsberatung" target="_blank" rel="noopener"><span>Ernährungsberatung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/seite.php?name=kaufberatung" target="_blank" rel="noopener"><span>Kaufberatung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?id=107" target="_blank" rel="noopener"><span>Ernährungs­beratung</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
<a href="https://schmacko-napf.petworkers.app/index.php?view=kalender" target="_blank" rel="noopener"><span>Stundenplan</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7 17 17 7M9 7h8v8"/></svg></a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -189,6 +188,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -85,6 +85,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+19
-14
@@ -2,7 +2,7 @@
|
||||
|
||||
python3 tools/build_pages.py
|
||||
"""
|
||||
import hashlib, os
|
||||
import hashlib, os, re
|
||||
from PIL import Image
|
||||
|
||||
OUT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
@@ -17,14 +17,16 @@ LOGO = "assets/img/logo.webp"
|
||||
CERT = "assets/img/gh-siegel.webp"
|
||||
CERT_ALT = "Zertifiziert nach G&H Tierernährung – Gesund gefüttert Heidi Herrmann"
|
||||
|
||||
# Buchungsportal (PetWorkers) – & als & für HTML-Attribute
|
||||
# Buchungsportal (PetWorkers) – & als & für HTML-Attribute.
|
||||
# Direkt die Seiten-IDs verlinken: Die seite.php?name=…-Adressen leiten um bzw. landen bei
|
||||
# Ernährungs- und Kaufberatung nur auf der Portal-Startseite. Für Kaufberatung gibt es im
|
||||
# Portal (Stand Okt. 2026) keine eigene Seite – sobald es eine gibt, hier wieder aufnehmen.
|
||||
PW = "https://schmacko-napf.petworkers.app/"
|
||||
BOOK = {
|
||||
"coach": ("Einzelcoaching", PW + "seite.php?name=einzelcoaching&id=11&sysname=coaching"),
|
||||
"groups": ("Gruppenstunden", PW + "seite.php?name=gruppenstunden&id=12&sysname=groups"),
|
||||
"coach": ("Einzelcoaching", PW + "index.php?id=11"),
|
||||
"groups": ("Gruppenstunden", PW + "index.php?id=12"),
|
||||
"courses": ("Kurse & Workshops", PW + "index.php?id=13"),
|
||||
"food": ("Ernährungsberatung", PW + "seite.php?name=ernaehrungsberatung"),
|
||||
"buy": ("Kaufberatung", PW + "seite.php?name=kaufberatung"),
|
||||
"food": ("Ernährungs­beratung", PW + "index.php?id=107"),
|
||||
"cal": ("Stundenplan", PW + "index.php?view=kalender"),
|
||||
}
|
||||
EXT = ' target="_blank" rel="noopener"'
|
||||
@@ -183,7 +185,7 @@ PAGES = [] # für die Sitemap
|
||||
# ================================================================ Startseite
|
||||
tiles = [
|
||||
("hundeschule.html", "Hundeschule", "", "katha-abendlicht", "Katha mit ihrem Hund auf einer Wiese im Abendlicht"),
|
||||
("ernaehrung.html", "Ernährungsberatung", "", "futternapf", "Hund schnuppert an einem Napf mit Trockenfutter"),
|
||||
("ernaehrung.html", "Ernährungs­beratung", "", "futternapf", "Hund schnuppert an einem Napf mit Trockenfutter"),
|
||||
("shop.html", "Shop", "", "laden", "Hund in einem Laden mit Hundezubehör"),
|
||||
("transportboxen.html", "Transportboxen", "Maßanfertigung fürs Auto", "kofferraum", "Hund sitzt im offenen Kofferraum hinter einem Trenngitter"),
|
||||
]
|
||||
@@ -241,7 +243,7 @@ index = head("Schmacko Napf & Hundetraining by Katha",
|
||||
<div class="panel panel--sage plate-panel reveal"><img src="{BARF}" alt="Teller mit frischem Fleisch, Gemüse und Obst für die Rohfütterung" width="900" height="900" loading="lazy"></div>
|
||||
<a class="panel panel--cream reveal d1" href="ernaehrung.html">
|
||||
<span class="panel-arrow panel-arrow--ink">{I["arrow"]}</span>
|
||||
<span class="kicker">Ernährungsberatung</span>
|
||||
<span class="kicker">Ernährungs­beratung</span>
|
||||
<h2 class="display">Gesund<br>gefüttert.</h2>
|
||||
<p class="big">Individuelle Futterpläne – für jedes Alter, auch bei Magen-Darm- oder Pankreas-Problemen.</p>
|
||||
<div class="facts"><span class="fact">BARF</span><span class="fact">Koch-BARF</span><span class="fact">Nass- & Trockenfutter</span></div>
|
||||
@@ -279,7 +281,7 @@ index = head("Schmacko Napf & Hundetraining by Katha",
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{booking(["coach", "groups", "courses", "food", "buy", "cal"])}{contact()}''' + footer()
|
||||
{booking(["coach", "groups", "courses", "food", "cal"])}{contact()}''' + footer()
|
||||
write("index.html", index)
|
||||
PAGES.append("index.html")
|
||||
|
||||
@@ -337,14 +339,14 @@ page("hundeschule.html", "Hundetraining – Schmacko Napf",
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{booking(["coach", "groups", "courses", "buy", "cal"])}{contact("katha-heide", "Katha sitzt mit ihrer Schäferhündin im Grünen")}''')
|
||||
{booking(["coach", "groups", "courses", "cal"])}{contact("katha-heide", "Katha sitzt mit ihrer Schäferhündin im Grünen")}''')
|
||||
PAGES.append("hundeschule.html")
|
||||
|
||||
# ================================================================ Ernährung
|
||||
page("ernaehrung.html", "Ernährungsberatung – Schmacko Napf",
|
||||
"Individuelle Futterpläne und Gesundheitsberatung für Hunde jeden Alters – BARF, Koch-BARF, Nass- und Trockenfutter.",
|
||||
"ernaehrung.html",
|
||||
page_hero("futternapf", "Ernährungs- & Gesundheitsberatung", "Fürsorge<br>in Napfform.",
|
||||
page_hero("futternapf", "Ernährungs- & Gesundheits­beratung", "Fürsorge<br>in Napfform.",
|
||||
"Individuelle Futterpläne – gesund, sensibel oder mit Diagnose.",
|
||||
"Hund schnuppert an einem Napf mit Trockenfutter") + f'''
|
||||
<div class="row">
|
||||
@@ -498,7 +500,7 @@ page("impressum.html", "Impressum – Schmacko Napf", "Impressum von Schmacko Na
|
||||
<p><b>Kontakt</b>Telefon: <a href="{PHONE_HREF}">{PHONE}</a><br>E-Mail: <a href="mailto:{MAIL}">{MAIL}</a></p>
|
||||
<p><b>Erlaubnis und Aufsichtsbehörde</b>Erlaubnis zur gewerbsmäßigen Ausbildung von Hunden für Dritte nach § 11 Abs. 1 Nr. 8 f TierSchG, erteilt im Oktober 2024 durch das Veterinäramt Landshut.</p>
|
||||
<p><b>Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV</b>Katharina Schulz, Anschrift wie oben</p>
|
||||
<p><b>Verbraucherstreitbeilegung</b>Ich bin nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.</p>
|
||||
<p><b>Verbraucher­streit­beilegung</b>Ich bin nicht bereit und nicht verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.</p>
|
||||
<p><b>Bildnachweis</b>Fotos von Katha und ihren Hunden: Steffi Biller, KK-Fotografie. Weitere Bilder: Unsplash.</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -548,9 +550,12 @@ page("404.html", "Seite nicht gefunden – Schmacko Napf", "Diese Seite gibt es
|
||||
</div>
|
||||
''', robots="noindex")
|
||||
|
||||
# 404 wird vom Server unter beliebigen Pfaden ausgeliefert – Links und Bilder relativ zur Wurzel auflösen
|
||||
# 404 wird vom Server unter beliebigen Pfaden ausgeliefert – Links und Bilder ab der Wurzel (/…) angeben.
|
||||
# Kein <base href="/">: damit würde „Zum Inhalt springen“ (#inhalt) auf die Startseite führen.
|
||||
p404 = os.path.join(OUT, "404.html")
|
||||
html404 = open(p404).read().replace("<head>", '<head>\n <base href="/">', 1)
|
||||
html404 = open(p404).read()
|
||||
html404 = re.sub(r'srcset="([^"]+)"', lambda m: 'srcset="' + ", ".join("/" + s.strip() for s in m.group(1).split(",")) + '"', html404)
|
||||
html404 = re.sub(r'\b(href|src)="(?![a-z]+:|#|/)', r'\1="/', html404)
|
||||
open(p404, "w").write(html404)
|
||||
|
||||
# ================================================================ robots.txt & sitemap.xml
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -92,6 +92,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
+2
-2
@@ -17,7 +17,7 @@
|
||||
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png">
|
||||
<link rel="preload" href="assets/fonts/questrial-latin.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="stylesheet" href="assets/site.css?v=00c6919d">
|
||||
<link rel="stylesheet" href="assets/site.css?v=ee527775">
|
||||
</head>
|
||||
<body>
|
||||
<a class="skip" href="#inhalt">Zum Inhalt springen</a>
|
||||
@@ -120,6 +120,6 @@
|
||||
<div class="footer-meta"><span>© 2026 Schmacko Napf & Hundetraining by Katha</span><span>Fotos: Steffi Biller, KK-Fotografie · Unsplash</span></div>
|
||||
</footer>
|
||||
</main>
|
||||
<script src="assets/site.js?v=4a2c8d49"></script>
|
||||
<script src="assets/site.js?v=1b827e6e"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user