From e48700f98243baf12c4592279e99476c25017908 Mon Sep 17 00:00:00 2001 From: qcigano Date: Sun, 2 Aug 2026 23:41:27 +0200 Subject: [PATCH] Tier-Familien-Seiten verfeinert, Foto-Karussell, Partnercode auf Sale-Ausschluss MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mehrere Feinschliff-Punkte auf den Tier-Familien-Seiten (z.B. "Hase"): - Abstand zwischen der Story-Box und der Kartenreihe verkleinert (vorher durch zwei separate Section-Umrandungen unnötig groß) — beide Bereiche teilen sich jetzt eine gemeinsame Section statt zwei gestapelte. - Platzhalter-Karten (Charaktere ohne Foto) bekommen jetzt exakt die gleiche Bildhöhe wie eine Karte mit echtem Foto (vorher griff nur die allgemeine Mindesthöhe, wirkte kleiner/anders proportioniert). - Neues optionales Feld `bannerName` an der Unterkategorie: überschreibt NUR die große Bannerüberschrift (Breadcrumb/Chips bleiben unverändert) — für "Hase" jetzt auf "HasiDog" gesetzt, den bekanntesten Charakter der Familie. - Unterkategorie-Seiten ganz ohne Produkte/Charaktere (z.B. Maschen- markierer, Holzknöpfe) zeigen jetzt schon 3 vorbereitete Platzhalter- Karten im selben Kartenstil statt nur einer nackten Textzeile — die Seite "sieht schon fertig aus", auch bevor echte Produkte da sind. Nebenbei einen Bug behoben: bei Unterkategorien ohne Charaktere, aber MIT echten Produkten, erschien vorher zusätzlich fälschlich der "noch keine Produkte"-Hinweis über der echten Produktreihe. Neu: Mini-Bildkarussell direkt auf jeder Produktkarte (Shop-Grid, Charakter-Kacheln, "Weitere Modelle", Sale-Seite, Startseite — überall wo ProductCard verwendet wird). Sobald ein Produkt mehrere Fotos hat (Admin-Bereich erlaubt das bereits über das Foto-Listenfeld), erscheinen dezente ‹/›-Pfeile plus Punkte-Indikator direkt auf der Karte, ganz ohne erst die Produktseite öffnen zu müssen. Neu: Partner-Rabattcodes können im Admin jetzt gezielt auf "gilt NICHT für Artikel, die schon im Sale sind" gestellt werden (giltAufSale: false) — der Rabatt berechnet sich dann nur noch auf den regulär bepreisten Teil des Warenkorbs, damit sich der Partner-Rabatt nicht zusätzlich auf einen bereits reduzierten Preis obendrauf summiert. Standardverhalten (Feld leer/true) bleibt wie bisher unverändert. Alle Änderungen lokal mit Test-Daten durchgespielt (mehrere Testfotos, Testprodukt im Sale + Partnercode mit/ohne giltAufSale, leere Unterkategorie-Seite) und vor dem Commit wieder zurückgesetzt. Co-Authored-By: Claude Sonnet 5 --- public/admin/config.yml | 1 + src/components/ProductCard.astro | 107 +++++++++++++++++- src/content/categories/diy-plushies.json | 1 + src/data/categories.ts | 5 + src/data/partnercodes.ts | 6 + src/data/rabatt.ts | 8 ++ src/i18n/ui.ts | 4 + .../shop/[kategorie]/[unterkategorie].astro | 52 +++++---- .../shop/[kategorie]/[unterkategorie].astro | 52 +++++---- .../shop/[kategorie]/[unterkategorie].astro | 52 +++++---- .../shop/[kategorie]/[unterkategorie].astro | 59 ++++++---- src/scripts/cart.ts | 29 ++++- src/styles/global.css | 7 +- 13 files changed, 290 insertions(+), 93 deletions(-) diff --git a/public/admin/config.yml b/public/admin/config.yml index bee4106..52ff584 100644 --- a/public/admin/config.yml +++ b/public/admin/config.yml @@ -312,6 +312,7 @@ collections: - { label: "ODER: Rabatt als fester Betrag (€)", name: betrag, widget: number, value_type: float, step: 0.01, required: false } - { label: "Gültig bis (leer = unbegrenzt)", name: bis, widget: datetime, format: "YYYY-MM-DD", date_format: "YYYY-MM-DD", time_format: false, required: false } - { label: "Aktiv", name: aktiv, widget: boolean, default: true, hint: "Ausschalten, um den Code vorübergehend zu sperren, ohne ihn (und die Historie) zu löschen." } + - { label: "Gilt auch für Artikel, die schon im Sale sind?", name: giltAufSale, widget: boolean, default: true, hint: "Anlassen (Ja) = der Rabatt gilt auf ALLES im Warenkorb, auch auf schon reduzierte Artikel. Ausschalten (Nein) = der Rabatt gilt NUR auf Artikel zum normalen Preis — schon reduzierte/Sale-Artikel bekommen dann keinen zusätzlichen Partner-Rabatt obendrauf." } - { label: "Notiz zu den Konditionen (z.B. vereinbarte Provision)", name: notiz, widget: text, required: false, hint: "Rein intern für dich — wirkt sich nicht auf die Website aus." } - name: bankverbindung diff --git a/src/components/ProductCard.astro b/src/components/ProductCard.astro index 5e460ff..6b19ff0 100644 --- a/src/components/ProductCard.astro +++ b/src/components/ProductCard.astro @@ -23,9 +23,24 @@ const name = product.name[lang]; const desc = product.beschreibung[lang]; --- -
+
{product.bilder && product.bilder.length > 0 ? ( - {name} + <> + {product.bilder.map((bild, i) => ( + {name} + ))} + {product.bilder.length > 1 && ( + <> + + + + + )} + ) : ( + +