[object Object]

← back to Designerlookbooks

add noreferrer to all target=_blank external links

8a72dd21e15ace3f513e20193501dbba1a80e653 · 2026-05-19 15:18:39 -0700 · Steve Abrams

Footer Shop on DW + cluster grid + product detail + search grid all now
carry rel="noopener noreferrer". Standing-rule mechanical fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 8a72dd21e15ace3f513e20193501dbba1a80e653
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue May 19 15:18:39 2026 -0700

    add noreferrer to all target=_blank external links
    
    Footer Shop on DW + cluster grid + product detail + search grid all now
    carry rel="noopener noreferrer". Standing-rule mechanical fix.
    
    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 server.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/server.js b/server.js
index 76c8339..8b4bd4b 100644
--- a/server.js
+++ b/server.js
@@ -545,7 +545,7 @@ ${body}
     <h4>More</h4>
     <ul>
       <li><a href="/lookbooks">All Lookbooks</a></li>
-      <li><a href="${DW_SHOPIFY}" rel="noopener">Shop on DW</a></li>
+      <li><a href="${DW_SHOPIFY}" target="_blank" rel="noopener noreferrer">Shop on DW</a></li>
       <li><a href="/about">About</a></li>
     </ul>
   </div>
@@ -736,7 +736,7 @@ app.get('/lookbook/:slug', (req, res) => {
           </div>
           <div class="actions">
             <a href="/p/${esc(p.handle || '')}">View</a>
-            <a class="cta" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener">Order Memo</a>
+            <a class="cta" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener noreferrer">Order Memo</a>
           </div>
         </article>
       `).join('')}</div>`}
@@ -797,8 +797,8 @@ app.get('/p/:handle', (req, res) => {
         ${p.retail_price ? `<div class="row"><div class="k">Retail</div><div>$${parseFloat(p.retail_price).toFixed(2)} /yd</div></div>` : ''}
         ${inClusters.length > 1 ? `<div class="row"><div class="k">Also in</div><div>${inClusters.slice(1).map(c => `<a href="/lookbook/${c.slug}" style="color:var(--accent)">${esc(c.title)}</a>`).join(', ')}</div></div>` : ''}
         <div class="actions">
-          <a class="btn btn-primary" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener">Order Memo Sample (free)</a>
-          <a class="btn btn-secondary" href="${esc(shopifyUrl(p.handle))}" target="_blank" rel="noopener">Shop on DW</a>
+          <a class="btn btn-primary" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener noreferrer">Order Memo Sample (free)</a>
+          <a class="btn btn-secondary" href="${esc(shopifyUrl(p.handle))}" target="_blank" rel="noopener noreferrer">Shop on DW</a>
         </div>
       </div>
     </div>
@@ -865,7 +865,7 @@ app.get('/search', (req, res) => {
           </a></div>
           <div class="actions">
             <a href="/p/${esc(p.handle || '')}">View</a>
-            <a class="cta" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener">Order Memo</a>
+            <a class="cta" href="${esc(memoSampleUrl(p.handle))}" target="_blank" rel="noopener noreferrer">Order Memo</a>
           </div>
         </article>
       `).join('')}</div>`}

← 2b2d6c7 polish pass — sharper hero copy + Editor's Letter editorial  ·  back to Designerlookbooks  ·  persist sort + density to localStorage on lookbook and searc 2a95466 →