← back to Vinylwallpaper
rails: tag-aware facet filter (productInRail) so rail drill-down + pills return products (fix regression)
ff0b245924f0e27f33b1b374855787eac5d78718 · 2026-05-26 10:45:59 -0700 · Steve Abrams
Files touched
Diff
commit ff0b245924f0e27f33b1b374855787eac5d78718
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue May 26 10:45:59 2026 -0700
rails: tag-aware facet filter (productInRail) so rail drill-down + pills return products (fix regression)
---
server.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/server.js b/server.js
index a034902..d531dd5 100644
--- a/server.js
+++ b/server.js
@@ -19,7 +19,7 @@ if (ADMIN_ENABLED) {
try { catalog = require('../_shared/admin-catalog'); }
catch (e) { console.error(`[${__SITE}] admin-catalog unavailable (${e.message}) — falling back to static JSON`); }
}
-const { buildRails, railFacets } = require('../_shared/rail-match');
+const { buildRails, railFacets, productInRail } = require('../_shared/rail-match');
const siteCfg = JSON.parse(fs.readFileSync(path.join(__dirname, 'site.config.json'), 'utf8'));
const SITE_SLUG = siteCfg.slug || __SITE;
const SITE_RAILS = Array.isArray(siteCfg.rails) ? siteCfg.rails : [];
@@ -185,7 +185,7 @@ app.get('/api/products', (req, res) => {
const needle = q.toLowerCase();
list = list.filter(p => (p.title || '').toLowerCase().includes(needle) || (p.tags || []).some(t => t.toLowerCase().includes(needle)));
}
- if (aesthetic && aesthetic !== 'all') list = list.filter(p => p.aesthetic === aesthetic);
+ if (aesthetic && aesthetic !== 'all') list = list.filter(p => productInRail(p, aesthetic));
if (vendor && vendor !== 'all') list = list.filter(p => p.vendor === vendor);
list = sortProducts(list, sort);
const total = list.length;
@@ -221,7 +221,7 @@ app.get('/api/facets', (req, res) => {
const needle = String(q).toLowerCase();
list = list.filter(p => (p.title || '').toLowerCase().includes(needle) || (p.tags || []).some(t => String(t).toLowerCase().includes(needle)));
}
- if (aesthetic && aesthetic !== 'all') list = list.filter(p => p.aesthetic === aesthetic);
+ if (aesthetic && aesthetic !== 'all') list = list.filter(p => productInRail(p, aesthetic));
const aesthetics = railFacets(list, SITE_RAILS);
const vendors = {};
for (const p of list) {
← b4b5619 rails: editorial labels for new tag-derived rail keys (index
·
back to Vinylwallpaper
·
sku-redact: wire shared vendor-id display scrubber ae8c75a →