From 90dfca2d4fdd26ff6f9cfe8833f591dbde1f7473 Mon Sep 17 00:00:00 2001 From: qcigano Date: Tue, 4 Aug 2026 14:22:20 +0200 Subject: [PATCH] =?UTF-8?q?Produktseiten:=20Zur=C3=BCck-Button=20oben,=20s?= =?UTF-8?q?pringt=20zur=20echten=20vorherigen=20Seite=20(alle=204=20Sprach?= =?UTF-8?q?en)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Auf ausdrücklichen Wunsch: oben auf jeder Produktseite jetzt ein "← Zurück"-Button vor dem Breadcrumb. Nutzt den Browser-Verlauf (history.back()) statt fest zur Kategorieseite zu springen — landet man z.B. von der Startseite, einer Suche oder "Das könnte dir gefallen" auf einer Produktseite, kommt man genau dahin zurück. Fällt sauber auf einen normalen Link zur Kategorieseite zurück, wenn kein echter vorheriger Seitenaufruf im Verlauf existiert (Direkt- aufruf, neuer Tab, Suchmaschine). In allen 4 Sprachversionen (de/en/ch/fr) umgesetzt. Nebenbei behoben: t.common.skipToContent (Skip-Link aus der BFSG-Barrierefreiheits-Arbeit vom 04.08.) war nur für "de" gepflegt und dadurch auf den en/ch/fr-Seiten leer — jetzt für alle 4 Sprachen ergänzt (gleicher Commit, da hier ohnehin dieselbe common-Sektion bearbeitet wurde). Lokal mit wrangler pages dev end-to-end getestet (Login, echtes Produkt, Button + Skript im gerenderten HTML bestätigt). Co-Authored-By: Claude Sonnet 5 --- src/i18n/ui.ts | 5 ++++- src/pages/ch/produkt/[slug].astro | 21 +++++++++++++++++++++ src/pages/en/produkt/[slug].astro | 22 ++++++++++++++++++++++ src/pages/fr/produkt/[slug].astro | 23 +++++++++++++++++++++++ src/pages/produkt/[slug].astro | 28 ++++++++++++++++++++++++++++ src/styles/global.css | 18 ++++++++++++++++++ 6 files changed, 116 insertions(+), 1 deletion(-) diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index 1bb184f..085e9bc 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -30,7 +30,7 @@ export const ui = { quantity: "Anzahl", photoSoon: "Produktfoto folgt", portraitSoon: "Porträtfoto von VanVan folgt", prevPhoto: "Vorheriges Foto", nextPhoto: "Nächstes Foto", handmadeBadge: "🩵 Handgemacht", - skipToContent: "Zum Inhalt springen", + skipToContent: "Zum Inhalt springen", back: "← Zurück", }, product: { articleNo: "Artikelnummer", material: "Material", size: "Größe", colors: "Farben", @@ -348,6 +348,7 @@ export const ui = { quantity: "Quantity", photoSoon: "Product photo coming soon", portraitSoon: "VanVan's portrait photo coming soon", prevPhoto: "Previous photo", nextPhoto: "Next photo", handmadeBadge: "🩵 Handmade", + skipToContent: "Skip to content", back: "← Back", }, product: { articleNo: "Item number", material: "Material", size: "Size", colors: "Colors", @@ -665,6 +666,7 @@ export const ui = { quantity: "Aazahl", photoSoon: "Produktfoto chunnt bald", portraitSoon: "Porträtfoto vo VanVan chunnt bald", prevPhoto: "Vorherigs Foto", nextPhoto: "Nächschts Foto", handmadeBadge: "🩵 Vo Hang gmacht", + skipToContent: "Zum Inhalt springe", back: "← Zrugg", }, product: { articleNo: "Artikelnummer", material: "Material", size: "Grösse", colors: "Farbe", @@ -982,6 +984,7 @@ export const ui = { quantity: "Quantité", photoSoon: "Photo du produit à venir", portraitSoon: "Photo de VanVan à venir", prevPhoto: "Photo précédente", nextPhoto: "Photo suivante", handmadeBadge: "🩵 Fait main", + skipToContent: "Aller au contenu", back: "← Retour", }, product: { articleNo: "Référence", material: "Matière", size: "Taille", colors: "Couleurs", diff --git a/src/pages/ch/produkt/[slug].astro b/src/pages/ch/produkt/[slug].astro index 9bca28a..ae2d118 100644 --- a/src/pages/ch/produkt/[slug].astro +++ b/src/pages/ch/produkt/[slug].astro @@ -44,6 +44,9 @@ const felder: [string, string | undefined][] = [
+ @@ -194,6 +197,24 @@ const felder: [string, string | undefined][] = [ )} + diff --git a/src/pages/en/produkt/[slug].astro b/src/pages/en/produkt/[slug].astro index f64a102..963f8c0 100644 --- a/src/pages/en/produkt/[slug].astro +++ b/src/pages/en/produkt/[slug].astro @@ -44,6 +44,9 @@ const felder: [string, string | undefined][] = [
+ @@ -194,6 +197,25 @@ const felder: [string, string | undefined][] = [ )} + diff --git a/src/pages/fr/produkt/[slug].astro b/src/pages/fr/produkt/[slug].astro index 381d019..bc9c324 100644 --- a/src/pages/fr/produkt/[slug].astro +++ b/src/pages/fr/produkt/[slug].astro @@ -44,6 +44,9 @@ const felder: [string, string | undefined][] = [
+ @@ -194,6 +197,26 @@ const felder: [string, string | undefined][] = [ )} + diff --git a/src/pages/produkt/[slug].astro b/src/pages/produkt/[slug].astro index 1603068..3ee558d 100644 --- a/src/pages/produkt/[slug].astro +++ b/src/pages/produkt/[slug].astro @@ -44,6 +44,15 @@ const felder: [string, string | undefined][] = [
+ {/* Auf ausdrücklichen Wunsch: oben auf jeder Produktseite ein Zurück-Button, der wirklich + zur vorherigen Seite zurückspringt (Browser-Verlauf), statt immer fest zur Kategorie zu + gehen — falls man z.B. von der Startseite, einer Suche oder "Das könnte dir gefallen" + kam. href bleibt als Rückfallebene gesetzt (kein JS / neuer Tab ohne Verlauf), das + Skript unten überschreibt den Klick nur, wenn ein echter vorheriger Seitenaufruf + derselben Seite im Verlauf existiert. */} + @@ -194,6 +203,25 @@ const felder: [string, string | undefined][] = [ )} + diff --git a/src/styles/global.css b/src/styles/global.css index 2f80d55..fcaab02 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -1122,6 +1122,24 @@ a:focus-visible, button:focus-visible { /* Aktuelle Ebene (Haupt-/Unterkategorie, Produktname) hebt sich etwas vom "Shop"-Wurzel-Link ab. */ .breadcrumb strong { color: var(--c-text); font-weight: 700; } +/* Zurück-Button oben auf der Produktseite (siehe src/pages/produkt/[slug].astro) — springt per + Skript zur wirklich vorherigen Seite im Browser-Verlauf, der href hier ist die Rückfallebene. */ +.product-back-row { margin-bottom: 0.9rem; } +.product-back-btn { + display: inline-flex; + align-items: center; + gap: 0.4em; + padding: 0.4em 0.95em; + border-radius: 999px; + border: 1px solid rgba(244, 241, 247, 0.16); + background: rgba(244, 241, 247, 0.04); + color: var(--c-text-muted); + font-size: 0.86rem; + font-weight: 600; + transition: border-color 0.2s var(--ease), color 0.2s var(--ease), background 0.2s var(--ease), transform 0.2s var(--ease); +} +.product-back-btn:hover { border-color: var(--c-accent); color: var(--c-accent); transform: translateX(-2px); } + /* Überschrift über der "weitere Produkte"-Reihe auf Unterkategorie-Seiten — macht klar, dass da noch mehr Produkte derselben Reihe kommen (Charakter-Familie), egal wie viele es am Ende sind. */ .more-variants-label { text-transform: uppercase; letter-spacing: 0.08em; color: var(--c-text-muted); margin-bottom: 0.8rem; }