[object Object]

← back to Interiordesignershowroom

auto-save: 2026-08-03T11:23:33 (1 files) — server.js

41049f5f8a727056493b31cb14b20b5d69e15f28 · 2026-08-03 11:23:39 -0700 · Steve Abrams

Files touched

Diff

commit 41049f5f8a727056493b31cb14b20b5d69e15f28
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Aug 3 11:23:39 2026 -0700

    auto-save: 2026-08-03T11:23:33 (1 files) — server.js
---
 server.js | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/server.js b/server.js
index 37b5dca..b8d4e01 100644
--- a/server.js
+++ b/server.js
@@ -226,8 +226,15 @@ app.get('/guides', async (_req, res, next) => {
       `<a class="guide-card" href="/guides/${esc(g.slug)}">
         ${g.hero_image ? `<img loading="lazy" src="${esc(g.hero_image)}" alt="${esc(g.title)}">` : ''}
         <h3>${esc(g.title)}</h3><p>${esc(g.dek || '')}</p></a>`).join('');
-    const body = `<section><h1>Buying Guides</h1><div class="guide-grid">${cards || '<p>Guides coming soon.</p>'}</div></section>`;
-    res.send(layout({ title: 'Interior Design Buying Guides', description: 'Editorial guides: how to choose, shop-the-look, and the best of every category.', canonical: `${SITE.url}/guides`, body, activeNav: '/guides' }));
+    const crumbs = [{ name: 'Home', url: `${SITE.url}/` }, { name: 'Guides', url: `${SITE.url}/guides` }];
+    const body = `<section>${breadcrumbNav(crumbs)}<h1>Buying Guides</h1><div class="guide-grid">${cards || '<p>Guides coming soon.</p>'}</div></section>`;
+    // ItemList of the published guides so the index itself is a structured collection
+    // Google can surface (values are raw here — JSON.stringify escapes them, not esc()).
+    const itemList = { '@context': 'https://schema.org', '@type': 'ItemList', name: 'Interior Design Buying Guides',
+      numberOfItems: rows.length,
+      itemListElement: rows.map((g, i) => ({ '@type': 'ListItem', position: i + 1, url: `${SITE.url}/guides/${g.slug}`, name: g.title })) };
+    const jsonld = [itemList, breadcrumbJsonld(crumbs)].filter(Boolean);
+    res.send(layout({ title: 'Interior Design Buying Guides', description: 'Editorial guides: how to choose, shop-the-look, and the best of every category.', canonical: `${SITE.url}/guides`, jsonld, body, activeNav: '/guides' }));
   } catch (e) { next(e); }
 });
 

← 1bd3992 security: response headers + non-breaking CSP (frame-ancesto  ·  back to Interiordesignershowroom  ·  seo+security: guides CollectionPage schema + Article url/dat cdb2c85 →