← back to Dw Yolo Loop
Landing: all line labels config-driven (card label, books heading, footer, gate, PDP crumbs/spec/share/story/JSON-LD) — fixes Thibaut showing 'Artmura'
eee1f4d7d6736dbc6a5a25196bc4988f251a8f40 · 2026-06-12 12:42:32 -0700 · Steve Abrams
Files touched
M artmura-site/public/index.htmlM artmura-site/public/product.html
Diff
commit eee1f4d7d6736dbc6a5a25196bc4988f251a8f40
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Jun 12 12:42:32 2026 -0700
Landing: all line labels config-driven (card label, books heading, footer, gate, PDP crumbs/spec/share/story/JSON-LD) — fixes Thibaut showing 'Artmura'
---
artmura-site/public/index.html | 33 +++++++++++++++++++--------------
artmura-site/public/product.html | 24 ++++++++++++++----------
2 files changed, 33 insertions(+), 24 deletions(-)
diff --git a/artmura-site/public/index.html b/artmura-site/public/index.html
index ef47e22..0ff7da7 100644
--- a/artmura-site/public/index.html
+++ b/artmura-site/public/index.html
@@ -3,13 +3,12 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
-<title>Artmura Wallcoverings | Designer Wallcoverings</title>
-<meta name="description" content="The Artmura collection at Designer Wallcoverings — architectural, hand-finished Italian non-woven wallcoverings. 161 designs across Opera & La Scala Milano, sold by the yard, to the trade.">
+<title>Designer Wallcoverings</title>
+<meta name="description" content="A curated collection at Designer Wallcoverings — to the trade.">
<meta property="og:type" content="website">
-<meta property="og:title" content="Artmura Wallcoverings | Designer Wallcoverings">
-<meta property="og:description" content="The Artmura collection, curated by Designer Wallcoverings.">
+<meta property="og:title" content="Designer Wallcoverings">
+<meta property="og:description" content="A curated collection at Designer Wallcoverings.">
<meta name="theme-color" content="#f6f2ec">
-<link rel="canonical" href="https://www.designerwallcoverings.com/collections/artmura">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
@@ -24,7 +23,7 @@
<header class="hero" id="hero">
<div class="hero-inner">
<div class="hero-eyebrow" id="heroEyebrow">A Designer Wallcoverings Collection</div>
- <h1 id="heroH1">Artmura</h1>
+ <h1 id="heroH1"> </h1>
<div class="sub" id="heroSub">Architectural surfaces, hand-finished — curated by Designer Wallcoverings.</div>
<div class="hero-kicker" id="heroKicker">Made in Italy · Non-Woven Wallcoverings</div>
</div>
@@ -33,8 +32,8 @@
<!-- COLLECTIONS -->
<section class="books" id="collections">
- <div class="eyebrow">The Books</div>
- <h2>Opera & La Scala Milano</h2>
+ <div class="eyebrow" id="booksEyebrow">The Collection</div>
+ <h2 id="booksHeading">Designer Wallcoverings</h2>
<div class="chips" id="chips"></div>
</section>
@@ -77,10 +76,10 @@
<div>
<a class="wm" href="https://www.designerwallcoverings.com">Designer Wallcoverings</a>
<div style="margin-top:8px">Designer Wallcoverings & Fabrics · To the Trade</div>
- <div style="margin-top:4px;opacity:.8">The Artmura Collection — one of 200+ lines we carry.</div>
+ <div id="footLine" style="margin-top:4px;opacity:.8">One of 200+ lines we carry.</div>
<div class="share" id="shareCollection" style="margin-top:18px"></div>
</div>
- <div class="gate">Architectural Italian non-woven wallcoverings, sold by the yard at Designer Wallcoverings. Order a sample before specifying. <a href="https://www.designerwallcoverings.com/collections/artmura" style="color:var(--gold)">Shop the Artmura collection →</a></div>
+ <div class="gate" id="footGate">Sold by the yard at Designer Wallcoverings. Order a sample before specifying. <a id="footGateLink" href="https://www.designerwallcoverings.com" style="color:var(--gold)">Shop the collection →</a></div>
</div>
</footer>
@@ -88,8 +87,8 @@
<script>
const $=s=>document.querySelector(s), grid=$('#grid');
-let ALL=[], view=[], activeBook=null, activeColor=null, activeSeries=null, FACETS=null;
-const LS={sort:'artmura.sort', dens:'artmura.density'};
+let ALL=[], view=[], activeBook=null, activeColor=null, activeSeries=null, FACETS=null, LINE='';
+const LS={sort:'dwline.sort', dens:'dwline.density'};
const BUCKET_HEX={white:'#efeae0',grey:'#9e978c',black:'#2a2722',red:'#a23b2e',orange:'#c8763a',brown:'#7b5a3c',gold:'#b8923f',green:'#5d7150',teal:'#3f8a86',blue:'#5a7494',purple:'#7a5f86',pink:'#bb8aa0'};
const heroBg = url => `linear-gradient(0deg,rgba(0,0,0,0),rgba(0,0,0,0)),url("${url}")`;
@@ -146,7 +145,7 @@ function render(){
<div class="ser">${p.series||''}</div>
<div class="nm">${p.color||p.title}</div>
<div class="meta">
- <span class="col">${p.hex?`<span class="dot" style="background:${p.hex}"></span>`:''}${p.book||'Artmura'}</span>
+ <span class="col">${p.hex?`<span class="dot" style="background:${p.hex}"></span>`:''}${p.book||LINE}</span>
<span class="pr view">View →</span>
</div>
</div>
@@ -195,8 +194,14 @@ function applyConfig(cfg){
if(cfg.tagline) $('#heroSub').textContent=cfg.tagline;
if(cfg.kicker) $('#heroKicker').textContent=cfg.kicker;
if(cfg.title) document.title=cfg.title;
+ if(cfg.metaDescription){ const m=document.querySelector('meta[name=description]'); if(m)m.content=cfg.metaDescription; }
+ if(cfg.collectionUrl){ let c=document.querySelector('link[rel=canonical]'); if(!c){c=document.createElement('link');c.rel='canonical';document.head.appendChild(c);} c.href=cfg.collectionUrl; }
+ LINE = cfg.line || LINE;
+ if(cfg.booksHeading){ const bh=$('#booksHeading'); if(bh)bh.textContent=cfg.booksHeading; }
if(cfg.collectionUrl){ const sb=$('#shopbar'); if(sb)sb.href=cfg.collectionUrl; }
- renderShare(cfg.collectionUrl||cfg.storeBase, (cfg.title||'Artmura at Designer Wallcoverings'));
+ const fl=$('#footLine'); if(fl) fl.textContent=`The ${LINE} Collection — one of 200+ lines we carry.`;
+ const fg=$('#footGateLink'); if(fg){ fg.textContent=`Shop the ${LINE} collection →`; if(cfg.collectionUrl)fg.href=cfg.collectionUrl; }
+ renderShare(cfg.collectionUrl||cfg.storeBase, (cfg.title||`${LINE} at Designer Wallcoverings`));
}
// social share cluster — shares the real DW collection page
diff --git a/artmura-site/public/product.html b/artmura-site/public/product.html
index 85f702a..3c3a705 100644
--- a/artmura-site/public/product.html
+++ b/artmura-site/public/product.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
-<title>Artmura Wallcovering | Designer Wallcoverings</title>
+<title>Designer Wallcoverings</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
@@ -20,7 +20,7 @@
<main class="pdp" id="pdp"><div class="crumbs">Loading…</div></main>
-<a class="shopbar" href="https://www.designerwallcoverings.com/collections/artmura" target="_blank" rel="noopener">Shop the full Artmura collection at <b>Designer Wallcoverings</b> →</a>
+<a class="shopbar" href="https://www.designerwallcoverings.com" target="_blank" rel="noopener">Shop the collection at <b>Designer Wallcoverings</b> →</a>
<script>
const handle=location.pathname.split('/').pop();
@@ -29,27 +29,31 @@ const esc=s=>(s||'').replace(/[&<>"]/g,c=>({'&':'&','<':'<','>':'>','"
function specRow(k,v){return v?`<div class="row"><span class="k">${k}</span><span class="v">${esc(v)}</span></div>`:'';}
(async()=>{
- const r=await fetch('/api/product/'+handle);
+ const [cfg,r]=await Promise.all([fetch('/api/config').then(x=>x.json()).catch(()=>({})), fetch('/api/product/'+handle)]);
+ const LINE = cfg.line || cfg.vendor || 'Designer Wallcoverings';
+ const COLL = cfg.collectionUrl || cfg.storeBase || 'https://www.designerwallcoverings.com';
+ document.querySelector('.corner.ul').setAttribute('href', cfg.houseUrl || 'https://www.designerwallcoverings.com');
+ const sbar=document.querySelector('.shopbar'); if(sbar){ sbar.href=COLL; sbar.innerHTML=`Shop the full ${LINE} collection at <b>Designer Wallcoverings</b> →`; }
if(!r.ok){document.getElementById('pdp').innerHTML='<div class="crumbs"><a href="/">← Back</a></div><h1 style="font-family:var(--serif)">Not found</h1>';return;}
const p=await r.json();
- document.title=`${p.color||p.title} · Artmura | Designer Wallcoverings`;
+ document.title=`${p.color||p.title} · ${LINE} | Designer Wallcoverings`;
const imgs=p.images.length?p.images:[p.swatch].filter(Boolean);
const main=imgs[0];
document.getElementById('pdp').innerHTML=`
- <div class="crumbs"><a href="https://www.designerwallcoverings.com">Designer Wallcoverings</a> / <a href="/">Artmura</a> / <a href="/#catalog">${esc(p.series)}</a> / ${esc(p.color||p.title)}</div>
+ <div class="crumbs"><a href="https://www.designerwallcoverings.com">Designer Wallcoverings</a> / <a href="/">${esc(LINE)}</a> / <a href="/#catalog">${esc(p.series)}</a> / ${esc(p.color||p.title)}</div>
<div class="pdp-top">
<div class="gallery">
<div class="main" id="main" style="background-image:url('${main}')"></div>
${imgs.length>1?`<div class="thumbs">${imgs.map((s,i)=>`<div class="t ${i===0?'on':''}" data-s="${s}" style="background-image:url('${s}')"></div>`).join('')}</div>`:''}
</div>
<div class="rail">
- <div class="ser">${esc(p.series)} · ${esc(p.book||'Artmura')}</div>
+ <div class="ser">${esc(p.series)} · ${esc(p.book||LINE)}</div>
<h1>${esc(p.color||p.title)}</h1>
<div class="colr">${esc(p.sku)} · ${esc(p.substrate||'Non-Woven')}</div>
<a class="cta" href="${esc(p.store_url)}" target="_blank" rel="noopener">View & price on Designer Wallcoverings →</a>
<a class="cta ghost" href="${esc(p.store_url)}" target="_blank" rel="noopener">Order a sample</a>
- <div class="share" id="share" data-url="${esc(p.store_url)}" data-title="${esc((p.color||p.title)+' · Artmura | Designer Wallcoverings')}" data-img="${esc(main)}"></div>
+ <div class="share" id="share" data-url="${esc(p.store_url)}" data-title="${esc((p.color||p.title)+' · '+LINE+' | Designer Wallcoverings')}" data-img="${esc(main)}"></div>
<div class="spec">
${specRow('Item code',p.sku)}
${specRow('Grade',p.grade)}
@@ -63,7 +67,7 @@ function specRow(k,v){return v?`<div class="row"><span class="k">${k}</span><spa
</div>
</div>
<div class="story">
- <div><h3>The story</h3><div>${p.body_html||'<p>'+esc(p.title)+' by Artmura.</p>'}</div></div>
+ <div><h3>The story</h3><div>${p.body_html||'<p>'+esc(p.title)+' by '+esc(LINE)+'.</p>'}</div></div>
<div><h3>Specifications</h3><p>${esc(p.width||'')} · ${esc(p.substrate||'Non-Woven')} · ${esc(p.grade||'Residential')} grade · ${esc(p.coverage||'')} · ${esc(p.origin||'Made in Italy')}.</p></div>
<div><h3>Care & install</h3><p>Paste-the-wall non-woven · spongeable · lead-time ${esc(p.lead_time||'3–4 weeks')}. Order a sample before specifying.</p></div>
</div>
@@ -74,8 +78,8 @@ function specRow(k,v){return v?`<div class="row"><span class="k">${k}</span><spa
// JSON-LD Product schema
// No price in JSON-LD — pricing lives on the canonical DW product page (offers → its URL)
- const ld={ "@context":"https://schema.org","@type":"Product",name:p.title+" by Artmura",sku:p.sku,
- brand:{"@type":"Brand",name:"Artmura"},category:"Wallcoverings",image:imgs,
+ const ld={ "@context":"https://schema.org","@type":"Product",name:p.title+" by "+LINE,sku:p.sku,
+ brand:{"@type":"Brand",name:LINE},category:"Wallcoverings",image:imgs,
description:(p.body_html||'').replace(/<[^>]+>/g,'').slice(0,300),
offers:{"@type":"Offer",availability:"https://schema.org/InStock",url:p.store_url}};
const s=document.createElement('script');s.type='application/ld+json';s.textContent=JSON.stringify(ld);document.head.appendChild(s);
← c8841df Thibaut color-extract script + color filter enabled (38/38 c
·
back to Dw Yolo Loop
·
Fix broken Trade nav link: /pages/trade-program (404) → /pag bcd2924 →