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
+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
|
||||
|
||||
Reference in new issue
Block a user