Direkt zum Inhalt
Wenn du dich für eine Auswahl entscheidest, wird die Seite komplett aktualisiert.
Wird in einem neuen Fenster geöffnet.
document.addEventListener("DOMContentLoaded", function () { const filterCategory =
document.querySelector("#filter-category"); const brandFilter = document.querySelector("#brand-filter"); const
genderFilter = document.querySelector("#gender-filter"); const brandSelect =
document.querySelector("#brand-select"); const genderSelect = document.querySelector("#gender-select"); const
productGrid = document.querySelector("#product-grid ul");
// Store all unique filter options let brands = new Set(); let genders = new Set();
// Fetch products and extract filter values function fetchFilterOptions() { fetch(window.location.pathname +
".json") // Get current collection's products .then(response => response.json()) .then(data => {
data.products.forEach(product => { if (product.vendor) brands.add(product.vendor); // Add brand if
(product.tags.includes("Male")) genders.add("Male"); if (product.tags.includes("Female")) genders.add("Female"); });
populateFilterOptions(); }) .catch(error => console.error("Error fetching filter options:", error)); }
// Populate dropdowns function populateFilterOptions() { brands.forEach(brand => { brandSelect.innerHTML += `
${brand}
`; });
genders.forEach(gender => { genderSelect.innerHTML += `
${gender}
`; }); }
// Show the correct filter based on user selection filterCategory.addEventListener("change", function () {
brandFilter.style.display = this.value === "brand" ? "block" : "none"; genderFilter.style.display = this.value ===
"gender" ? "block" : "none"; });
// Fetch filtered products on selection brandSelect.addEventListener("change", fetchFilteredProducts);
genderSelect.addEventListener("change", fetchFilteredProducts);
function fetchFilteredProducts() { let selectedBrands = Array.from(brandSelect.selectedOptions).map(option =>
option.value); let selectedGenders = Array.from(genderSelect.selectedOptions).map(option => option.value); let query
= [];
if (selectedBrands.length) query.push(`brand:${selectedBrands.join(",")}`); if (selectedGenders.length)
query.push(`tag:${selectedGenders.join(",")}`);
let queryString = query.length ? query.join("&") : "";
fetch(`/search/suggest.json?q=${queryString}&resources[type]=product&resources[limit]=50`) .then(response =>
response.json()) .then(data => { renderProducts(data.resources.results.products); }) .catch(error =>
console.error("Error fetching filtered products:", error)); }
function renderProducts(products) { productGrid.innerHTML = "";
if (products.length === 0) { productGrid.innerHTML = "
No products found.
"; return; }
products.forEach(product => { productGrid.innerHTML += `
${product.title}
${product.price}
`; }); }
fetchFilterOptions(); // Run on page load });