Files
vans-diy-bastelbedarf/public/admin/config.yml
T
qcigano 965434e2fc Adminbereich: Lila-Babyblau-Farbmix + klarer Hinweis zur automatischen Rabatt-Berechnung
- Akzentfarbe im Adminbereich von einfarbigem Türkis auf einen echten
  Lila-Babyblau-Mix umgestellt: normale Buttons/aktive Felder sind
  babyblau, Hover-/Fokus-/Auswahl-Zustände kippen ins Lila (gleicher
  Violett-Ton wie die Verlaufsränder auf der Website) — dadurch zieht
  sich der Farbmix durch die ganze Oberfläche statt nur eine Einzelfarbe
  zu sein.
- Hinweistext bei "Rabatte" ergänzt: macht klar, dass nichts selbst
  ausgerechnet werden muss — die Website berechnet den neuen Preis
  automatisch, sobald oben rechts auf "Speichern" geklickt wird.

Verifiziert per Puppeteer-Login in den echten Adminbereich (Access
Token): Farben korrekt übernommen, keine Konfigurationsfehler, Text
sichtbar.
2026-08-02 19:51:00 +02:00

274 lines
13 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
backend:
name: github
repo: vans-diy-bastelbedarf/website
branch: main
base_url: https://vans-diy-bastelbedarf-cms-auth.dogfather1608.workers.dev
logo:
src: /logo.png
app_title: "Van's Shop Adminbereich"
# Bilder, die VanVan hier hochlädt, landen automatisch hier im Projekt und sind danach
# unter /img/products/<dateiname> auf der Website erreichbar.
media_folder: "public/img/products"
public_folder: "/img/products"
collections:
- name: products
label: Produkte
label_singular: Produkt
icon: shopping_bag
folder: src/content/products
create: true
delete: true
slug: "{{fields.slug}}"
identifier_field: slug
extension: json
format: json
summary: "{{name.de}} — {{preis}} €"
fields:
- label: "📷 Fotos"
name: bilder
widget: list
required: false
hint: "Hier Fotos hochladen oder per Drag & Drop reinziehen. Das erste Foto ist das Hauptbild, das überall zuerst angezeigt wird."
field: { label: Foto, name: bild, widget: image }
- label: Name
name: name
widget: object
fields:
- { label: Deutsch, name: de, widget: string }
- { label: Englisch, name: en, widget: string }
- { label: "Schweizerdeutsch", name: ch, widget: string }
- { label: Französisch, name: fr, widget: string }
- label: Beschreibung
name: beschreibung
widget: object
fields:
- { label: Deutsch, name: de, widget: text }
- { label: Englisch, name: en, widget: text }
- { label: "Schweizerdeutsch", name: ch, widget: text }
- { label: Französisch, name: fr, widget: text }
- label: "Preis (€)"
name: preis
widget: number
value_type: float
step: 0.01
hint: "Der ganz normale Verkaufspreis, z.B. 19.99"
- label: "Reduzierter Preis? (nur ausfüllen, wenn im Sale)"
name: preisAlt
widget: number
value_type: float
step: 0.01
required: false
hint: "Hier den ALTEN, höheren Preis eintragen — er wird dann durchgestrichen neben dem neuen Preis angezeigt. Leer lassen, wenn kein Sale."
- label: "🏷️ Rabatte (optional — alles leer lassen, wenn kein automatischer Rabatt gelten soll)"
name: rabatt
widget: object
required: false
hint: "Zusätzlich zum 'Reduzierten Preis' oben kannst du hier einen automatischen Rabatt einrichten, der von selbst wieder abläuft, sowie einen Mengenrabatt (z.B. ab 3 Stück günstiger). Du musst nichts selbst ausrechnen — sobald du oben rechts auf 'Speichern' klickst, berechnet die Website den neuen Preis automatisch und zeigt ihn den Kund:innen sofort an."
fields:
- { label: "Rabatt in Prozent (z.B. 20 für 20%)", name: prozent, widget: number, value_type: int, required: false, hint: "Nur ausfüllen ODER den Betrag unten — nicht beides." }
- { label: "ODER: Rabatt als fester Betrag (€)", name: betrag, widget: number, value_type: float, step: 0.01, required: false }
- { label: "Rabatt gültig bis (leer = läuft nicht automatisch ab)", name: bis, widget: datetime, format: "YYYY-MM-DD", date_format: "YYYY-MM-DD", time_format: false, required: false, hint: "Nach diesem Datum verschwindet der Rabatt automatisch — ohne dass du etwas tun musst." }
- label: "Mengenrabatt-Staffel (z.B. ab 3 Stück 10% Rabatt)"
name: mengenrabatt
widget: list
required: false
summary: "ab {{fields.abMenge}} Stück → -{{fields.prozent}}%"
hint: "Gilt automatisch im Warenkorb, wenn jemand mehrere Stück dieses Produkts kauft."
fields:
- { label: "Ab wie vielen Stück", name: abMenge, widget: number, value_type: int }
- { label: "Rabatt in Prozent", name: prozent, widget: number, value_type: int }
- label: "Auf Lager"
name: bestand
widget: number
value_type: int
hint: "Wie viele Stück hast du vorrätig? 0 = ausverkauft (Artikel bleibt trotzdem sichtbar)."
- label: Kategorie
name: kategorie
widget: relation
collection: categories
search_fields: ["name.de"]
value_field: "slug"
display_fields: ["name.de"]
- label: "Unterkategorie (optional)"
name: unterkategorie
widget: string
required: false
hint: "Interner Code der Unterkategorie eintragen, z.B. kuh-frieda (siehe Bereich Kategorien)"
- label: Auszeichnungen
name: badges
widget: select
multiple: true
required: false
hint: "Erscheinen als kleine Sticker auf dem Produktbild"
options:
- { label: "✨ Neu", value: neu }
- { label: "🔥 Bestseller", value: bestseller }
- { label: "🏷️ Im Sale", value: sale }
- { label: "🧶 Handgemacht", value: handgemacht }
- { label: Artikelnummer, name: artikelnummer, widget: string, required: false }
- { label: Material, name: material, widget: string, required: false }
- { label: "Größe / Maße", name: groesse, widget: string, required: false }
- label: Farben
name: farben
widget: list
required: false
hint: "Eine Farbe pro Zeile, z.B. Lavendel"
- { label: Lieferumfang, name: lieferumfang, widget: string, required: false }
- { label: Pflegehinweise, name: pflegehinweise, widget: string, required: false }
- { label: Lieferzeit, name: lieferzeit, widget: string, required: false }
- label: "🚚 Eigene Versandkosten (nur für Einzelkauf dieses Produkts)"
name: versand
widget: object
required: false
hint: "Gilt NUR, wenn jemand genau 1 Stück von genau diesem Produkt kauft. Bei mehreren Produkten/Stück im Warenkorb gilt automatisch die allgemeine Versandkosten-Staffel (siehe Bereich 'Versandkosten-Staffel'). Leer lassen = Staffel gilt auch beim Einzelkauf."
fields:
- { label: "Deutschland (€)", name: de, widget: number, value_type: float, step: 0.01, required: false }
- { label: "Österreich (€)", name: at, widget: number, value_type: float, step: 0.01, required: false }
- { label: "Schweiz (€)", name: ch, widget: number, value_type: float, step: 0.01, required: false }
- { label: "Luxemburg (€)", name: lu, widget: number, value_type: float, step: 0.01, required: false }
- label: "Interner Code (URL) — nach Veröffentlichung nicht mehr ändern!"
name: slug
widget: string
hint: "Nur Kleinbuchstaben, Zahlen und Bindestriche, z.B. wolke-plushie-lavendel"
- name: categories
label: Kategorien
label_singular: Kategorie
icon: category
folder: src/content/categories
create: true
delete: false
slug: "{{fields.slug}}"
identifier_field: slug
extension: json
format: json
summary: "{{name.de}}"
fields:
- label: "Icon (Emoji)"
name: icon
widget: string
hint: "z.B. 🧸"
- label: Name
name: name
widget: object
fields:
- { label: Deutsch, name: de, widget: string }
- { label: Englisch, name: en, widget: string }
- { label: "Schweizerdeutsch", name: ch, widget: string }
- { label: Französisch, name: fr, widget: string }
- label: Beschreibung
name: description
widget: object
fields:
- { label: Deutsch, name: de, widget: text }
- { label: Englisch, name: en, widget: text }
- { label: "Schweizerdeutsch", name: ch, widget: text }
- { label: Französisch, name: fr, widget: text }
- label: Unterkategorien
name: subcategories
widget: list
required: false
summary: "{{fields.name.de}}"
fields:
- { label: "Interner Code (URL)", name: slug, widget: string }
- label: Name
name: name
widget: object
fields:
- { label: Deutsch, name: de, widget: string }
- { label: Englisch, name: en, widget: string }
- { label: "Schweizerdeutsch", name: ch, widget: string }
- { label: Französisch, name: fr, widget: string }
- label: "Reihenfolge (0 = zuerst)"
name: order
widget: number
value_type: int
- label: "Interner Code (URL) — nach Veröffentlichung nicht mehr ändern!"
name: slug
widget: string
- name: versandkosten
label: "🚚 Versandkosten-Staffel"
icon: local_shipping
files:
- name: staffel
label: "Versandkosten-Staffel nach Warenwert"
file: src/content/versandstaffel.json
description: >
Gilt automatisch im Warenkorb/an der Kasse, sobald jemand mehrere Produkte oder
mehrere Stück kauft (bei genau 1 Stück von 1 Produkt gilt stattdessen der eigene
Versandpreis am Produkt, falls dort einer eingetragen ist). Ab 75 € Warenwert ist der
Versand immer kostenlos, unabhängig von dieser Tabelle.
fields:
- label: Deutschland
name: de
widget: list
summary: "ab {{fields.abWarenwert}} € → {{fields.kosten}} €"
fields:
- { label: "Ab Warenwert (€)", name: abWarenwert, widget: number, value_type: float, step: 0.01 }
- { label: "Versandkosten (€)", name: kosten, widget: number, value_type: float, step: 0.01 }
- label: Österreich
name: at
widget: list
summary: "ab {{fields.abWarenwert}} € → {{fields.kosten}} €"
fields:
- { label: "Ab Warenwert (€)", name: abWarenwert, widget: number, value_type: float, step: 0.01 }
- { label: "Versandkosten (€)", name: kosten, widget: number, value_type: float, step: 0.01 }
- label: Schweiz
name: ch
widget: list
summary: "ab {{fields.abWarenwert}} € → {{fields.kosten}} €"
fields:
- { label: "Ab Warenwert (€)", name: abWarenwert, widget: number, value_type: float, step: 0.01 }
- { label: "Versandkosten (€)", name: kosten, widget: number, value_type: float, step: 0.01 }
- label: Luxemburg
name: lu
widget: list
summary: "ab {{fields.abWarenwert}} € → {{fields.kosten}} €"
fields:
- { label: "Ab Warenwert (€)", name: abWarenwert, widget: number, value_type: float, step: 0.01 }
- { label: "Versandkosten (€)", name: kosten, widget: number, value_type: float, step: 0.01 }
- name: gutscheine
label: "🎟️ Gutscheincodes"
icon: local_offer
files:
- name: codes
label: "Gutscheincodes"
file: src/content/gutscheine.json
description: >
Codes, die Kund:innen im Warenkorb/an der Kasse eingeben können, um Rabatt auf den
gesamten Warenwert zu bekommen (z.B. für Aktionen, Newsletter, Stammkund:innen).
fields:
- label: Gutscheincodes
name: codes
widget: list
summary: "{{fields.code}}"
fields:
- { label: "Code (z.B. WILLKOMMEN10)", name: code, widget: string, hint: "Groß-/Kleinschreibung ist egal — wird automatisch angepasst." }
- { label: "Rabatt in Prozent (z.B. 10 für 10%)", name: prozent, widget: number, value_type: int, required: false }
- { 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 }
- name: bankverbindung
label: "🏦 Bankverbindung"
icon: account_balance
files:
- name: konto
label: "Bankverbindung für Vorkasse"
file: src/content/bankverbindung.json
description: >
Wird Kund:innen direkt im Checkout angezeigt, sobald sie "Banküberweisung (Vorkasse)"
als Zahlungsart wählen — sie überweisen dann selbst auf dieses Konto. Bitte einmal mit
deinen echten Kontodaten ausfüllen, sonst bekommen Kund:innen nur einen Platzhalter
angezeigt.
fields:
- { label: Kontoinhaber:in, name: kontoinhaber, widget: string, required: false }
- { label: IBAN, name: iban, widget: string, required: false, hint: "z.B. DE12 3456 7890 1234 5678 90" }
- { label: BIC, name: bic, widget: string, required: false }
- { label: Bank (Name), name: bank, widget: string, required: false }