Fix: Kategorie-/Bewertungs-Dropdown im Shop-Filter kaputt + horizontaler Scrollbalken
Beim Einbau der Kundenbewertungen in den Shop-Filter (voriger Commit) landete ein "import" mitten in einem define:vars-Skript, das aber gar keine Module unterstützt. Dadurch brach das komplette Filter-Skript auf allen 4 Sprachen mit einem SyntaxError ab, sobald es geladen wurde – Kategorie-Dropdown, Mindestbewertung-Dropdown und Sortierung reagierten dadurch gar nicht mehr auf Klicks. Die lokal gespeicherten Kundenbewertungen werden jetzt in einem eigenen, echten Modul-Skript direkt danach eingerechnet. Zusätzlich: horizontaler Scrollbalken im Dropdown-Menü entfernt (nur noch vertikal scrollbar), wie gewünscht. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
6f10e41386
commit
cc3e84bd98
@@ -119,8 +119,6 @@ const t = useTranslations(lang);
|
||||
</Layout>
|
||||
|
||||
<script define:vars={{ productSingular: t.shop.productSingular, productPlural: t.shop.productPlural, unitFirst: lang === "en" }}>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
const grid = document.getElementById("product-grid");
|
||||
const slots = Array.from(grid.querySelectorAll(".product-slot"));
|
||||
const kategorieSel = document.getElementById("f-kategorie");
|
||||
@@ -239,6 +237,20 @@ const t = useTranslations(lang);
|
||||
const preset = params.get("kategorie");
|
||||
if (preset) dropdowns.forEach((d) => d.select(preset));
|
||||
|
||||
// Rezensionen, die auf DIESEM Gerät lokal gespeichert wurden (siehe scripts/reviews.ts),
|
||||
// werden in einem eigenen (Modul-)Skript direkt im Anschluss eingerechnet — dieses Skript
|
||||
// hier nutzt define:vars und darf deshalb selbst kein "import" enthalten (siehe unten).
|
||||
window.__shopApply = apply;
|
||||
apply();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
// Lokal auf diesem Gerät gespeicherte Kundenrezensionen (siehe scripts/reviews.ts) in
|
||||
// data-bewertung einrechnen und danach neu filtern/sortieren — sonst würden der
|
||||
// Mindestbewertung-Filter und die Sortierung "Beste Bewertung" neue Rezensionen ignorieren.
|
||||
const slots = Array.from(document.querySelectorAll(".product-slot"));
|
||||
slots.forEach((slot) => {
|
||||
const slug = slot.dataset.slug;
|
||||
if (!slug) return;
|
||||
@@ -249,6 +261,5 @@ const t = useTranslations(lang);
|
||||
const summe = basisSchnitt * basisAnzahl + lokale.reduce((s, r) => s + r.bewertung, 0);
|
||||
slot.dataset.bewertung = String(summe / (basisAnzahl + lokale.length));
|
||||
});
|
||||
|
||||
apply();
|
||||
(window as any).__shopApply?.();
|
||||
</script>
|
||||
|
||||
@@ -119,8 +119,6 @@ const t = useTranslations(lang);
|
||||
</Layout>
|
||||
|
||||
<script define:vars={{ productSingular: t.shop.productSingular, productPlural: t.shop.productPlural, unitFirst: lang === "en" }}>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
const grid = document.getElementById("product-grid");
|
||||
const slots = Array.from(grid.querySelectorAll(".product-slot"));
|
||||
const kategorieSel = document.getElementById("f-kategorie");
|
||||
@@ -239,6 +237,20 @@ const t = useTranslations(lang);
|
||||
const preset = params.get("kategorie");
|
||||
if (preset) dropdowns.forEach((d) => d.select(preset));
|
||||
|
||||
// Rezensionen, die auf DIESEM Gerät lokal gespeichert wurden (siehe scripts/reviews.ts),
|
||||
// werden in einem eigenen (Modul-)Skript direkt im Anschluss eingerechnet — dieses Skript
|
||||
// hier nutzt define:vars und darf deshalb selbst kein "import" enthalten (siehe unten).
|
||||
window.__shopApply = apply;
|
||||
apply();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
// Lokal auf diesem Gerät gespeicherte Kundenrezensionen (siehe scripts/reviews.ts) in
|
||||
// data-bewertung einrechnen und danach neu filtern/sortieren — sonst würden der
|
||||
// Mindestbewertung-Filter und die Sortierung "Beste Bewertung" neue Rezensionen ignorieren.
|
||||
const slots = Array.from(document.querySelectorAll(".product-slot"));
|
||||
slots.forEach((slot) => {
|
||||
const slug = slot.dataset.slug;
|
||||
if (!slug) return;
|
||||
@@ -249,6 +261,5 @@ const t = useTranslations(lang);
|
||||
const summe = basisSchnitt * basisAnzahl + lokale.reduce((s, r) => s + r.bewertung, 0);
|
||||
slot.dataset.bewertung = String(summe / (basisAnzahl + lokale.length));
|
||||
});
|
||||
|
||||
apply();
|
||||
(window as any).__shopApply?.();
|
||||
</script>
|
||||
|
||||
@@ -119,8 +119,6 @@ const t = useTranslations(lang);
|
||||
</Layout>
|
||||
|
||||
<script define:vars={{ productSingular: t.shop.productSingular, productPlural: t.shop.productPlural, unitFirst: lang === "en" }}>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
const grid = document.getElementById("product-grid");
|
||||
const slots = Array.from(grid.querySelectorAll(".product-slot"));
|
||||
const kategorieSel = document.getElementById("f-kategorie");
|
||||
@@ -239,6 +237,20 @@ const t = useTranslations(lang);
|
||||
const preset = params.get("kategorie");
|
||||
if (preset) dropdowns.forEach((d) => d.select(preset));
|
||||
|
||||
// Rezensionen, die auf DIESEM Gerät lokal gespeichert wurden (siehe scripts/reviews.ts),
|
||||
// werden in einem eigenen (Modul-)Skript direkt im Anschluss eingerechnet — dieses Skript
|
||||
// hier nutzt define:vars und darf deshalb selbst kein "import" enthalten (siehe unten).
|
||||
window.__shopApply = apply;
|
||||
apply();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
import { lokaleBewertungenFuer } from "../../../scripts/reviews";
|
||||
|
||||
// Lokal auf diesem Gerät gespeicherte Kundenrezensionen (siehe scripts/reviews.ts) in
|
||||
// data-bewertung einrechnen und danach neu filtern/sortieren — sonst würden der
|
||||
// Mindestbewertung-Filter und die Sortierung "Beste Bewertung" neue Rezensionen ignorieren.
|
||||
const slots = Array.from(document.querySelectorAll(".product-slot"));
|
||||
slots.forEach((slot) => {
|
||||
const slug = slot.dataset.slug;
|
||||
if (!slug) return;
|
||||
@@ -249,6 +261,5 @@ const t = useTranslations(lang);
|
||||
const summe = basisSchnitt * basisAnzahl + lokale.reduce((s, r) => s + r.bewertung, 0);
|
||||
slot.dataset.bewertung = String(summe / (basisAnzahl + lokale.length));
|
||||
});
|
||||
|
||||
apply();
|
||||
(window as any).__shopApply?.();
|
||||
</script>
|
||||
|
||||
@@ -128,8 +128,6 @@ const t = useTranslations(lang);
|
||||
</Layout>
|
||||
|
||||
<script define:vars={{ productSingular: t.shop.productSingular, productPlural: t.shop.productPlural, unitFirst: lang === "en" }}>
|
||||
import { lokaleBewertungenFuer } from "../../scripts/reviews";
|
||||
|
||||
const grid = document.getElementById("product-grid");
|
||||
const slots = Array.from(grid.querySelectorAll(".product-slot"));
|
||||
const kategorieSel = document.getElementById("f-kategorie");
|
||||
@@ -248,9 +246,20 @@ const t = useTranslations(lang);
|
||||
const preset = params.get("kategorie");
|
||||
if (preset) dropdowns.forEach((d) => d.select(preset));
|
||||
|
||||
// Rezensionen, die auf DIESEM Gerät lokal gespeichert wurden (siehe scripts/reviews.ts),
|
||||
// werden in einem eigenen (Modul-)Skript direkt im Anschluss eingerechnet — dieses Skript
|
||||
// hier nutzt define:vars und darf deshalb selbst kein "import" enthalten (siehe unten).
|
||||
window.__shopApply = apply;
|
||||
apply();
|
||||
</script>
|
||||
|
||||
<script>
|
||||
import { lokaleBewertungenFuer } from "../../scripts/reviews";
|
||||
|
||||
// Lokal auf diesem Gerät gespeicherte Kundenrezensionen (siehe scripts/reviews.ts) in
|
||||
// data-bewertung einrechnen, BEVOR zum ersten Mal gefiltert/sortiert wird — sonst würden der
|
||||
// data-bewertung einrechnen und danach neu filtern/sortieren — sonst würden der
|
||||
// Mindestbewertung-Filter und die Sortierung "Beste Bewertung" neue Rezensionen ignorieren.
|
||||
const slots = Array.from(document.querySelectorAll(".product-slot"));
|
||||
slots.forEach((slot) => {
|
||||
const slug = slot.dataset.slug;
|
||||
if (!slug) return;
|
||||
@@ -261,6 +270,5 @@ const t = useTranslations(lang);
|
||||
const summe = basisSchnitt * basisAnzahl + lokale.reduce((s, r) => s + r.bewertung, 0);
|
||||
slot.dataset.bewertung = String(summe / (basisAnzahl + lokale.length));
|
||||
});
|
||||
|
||||
apply();
|
||||
(window as any).__shopApply?.();
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user