← back to Wallpapercanada
rails: tag-aware facet filter (productInRail) so rail drill-down + pills return products (fix regression)
9888676b7a87ee3ec1cfc0ba8f586472b5838a5b · 2026-05-26 10:45:59 -0700 · Steve Abrams
Files touched
Diff
commit 9888676b7a87ee3ec1cfc0ba8f586472b5838a5b
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 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server.js b/server.js
index 5dbd2f1..39705e0 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 : [];
@@ -164,7 +164,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;
← cff90a5 rails: editorial labels for new tag-derived rail keys (index
·
back to Wallpapercanada
·
sku-redact: wire shared vendor-id display scrubber (proof si ebf3570 →