feat: refine trade-pro variant pages (brand/service/faq/search/notfound)

Task 11 (layout port finale): rebuild the five thin variant pages in the
sf-tp design language, informed by upstream industrial/automotive
1.3.0/1.4.0 information architecture.

- brand: page-hero (breadcrumb Home > Brands > name, cover bg, anchor
  button) + related-product card grid (fields.brand == page title) +
  brand profile body only when authored; derived placeholder summary
  excluded, empty brands get an empty state, never fabricated intros.
- service: page-hero + 1.2/0.8 detail grid (article-body typography +
  sticky CTA card with contact/back links); empty body collapses to a
  centered solo column with the CTA card kept.
- faq: page-hero + article-body for the rich-text body (platform has no
  faq content type; sanitize strips details/summary so the typography
  layer carries it, block-driven details coexist via sf-canvas) +
  dark contact-guidance card; empty body swaps to an empty state.
- search: adopts the same platform mechanism as all four upstream
  themes (site-runtime.js ?q= client search over dist-root
  search-index.json); #sf-search/#sf-search-results/#sf-search-count
  hooks and .sf-search-page kept as JS contract, panel and injected
  result cards restyled via scoped cms-token overrides.
- notfound: branded dark-band 404 (icon macro, giant 404 h1, English
  copy, back-home + browse-products buttons); no end-cta.

CSS: Task 11 block appended to pro.css (new sf-tp-* classes only, own
900/620 media queries; shared hero/grid/typography responsive rules
come from existing 10a/10c/10d blocks; search overrides beat
factory.css by specificity without touching hooks).

Tests: test_trade_pro_variant_pages_structure covers brand fixture
(related filtering, empty forms), service/faq body-vs-empty, search
mechanism contract + noindex + index asset, 404 structure, v3 spot
checks (single h1, chrome, SVG arrows) and clean build report.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-26 16:32:15 +08:00
parent e21dbb6518
commit 391d22f1a8
7 changed files with 499 additions and 8 deletions
+31 -2
View File
@@ -1,2 +1,31 @@
<section class="pro-inner-hero"><div class="pro-wrap"><span class="pro-eyebrow">SEARCH / CONTENT</span><h1>Site Search</h1><p>Search products, brands, news and cases across this site.</p></div></section>
<main id="main-content" class="sf-search-page pro-wrap"><label for="sf-search">Enter a keyword</label><input type="search" id="sf-search" placeholder="Search products, brands, news, cases..." autofocus><div id="sf-search-count" aria-live="polite"></div><div id="sf-search-results"></div></main>
{# trade-pro search — 站内搜索页精修(Task 11)。
机制决策:采用与上游四主题完全相同的平台静态检索机制(V8.31 起全主题
共享,非 automotive 专属)——构建器为每个构建打包 search-index.json
(全站条目标题/摘要/类型/品牌),site-runtime.js 在客户端完成 ?q= 深链
读取 + 关键词过滤 + 结果渲染,无任何服务端 API。JS 寻址的是 ID 钩子
(#sf-search 输入 / #sf-search-results 容器 / #sf-search-count 计数,
factory.css 的 .sf-search-page 提供基线观感)——三钩子与 .sf-search-page
类名必须原样保留(平台契约),否则检索退化为一页死输入框。
本模板的精修是观感层:hero 换 sf-tp-page-hero(10c 内页 hero 同款浅
品牌横幅,搜索是工具页无层级——不带面包屑,与上游一致),搜索面板由
pro.css 的 Task 11 作用域规则把 factory.css 的 system-ui 基线覆写为
cms 令牌观感(含 site-runtime.js 注入的 .sf-search-result 结果卡)。
构建器生成本页时 kind='search'(route 推断先于显式模板),robots 为
noindex,follow;pro.html 对 search 页不渲染结尾 CTA 带。页面为英文
(构建器的中文页题「站内搜索」仅进 <title>,不进正文)。 #}
<section class="sf-tp-page-hero sf-tp-search-hero">
<div class="sf-tp-page-hero-overlay" aria-hidden="true"></div>
<div class="wrap">
<div class="sf-tp-page-hero-copy" data-reveal>
<span class="eyebrow">SEARCH / CONTENT</span>
<h1>Site Search</h1>
<p class="sf-tp-page-hero-lead">Search products, brands, news and cases across this site.</p>
</div>
</div>
</section>
<main id="main-content" class="sf-search-page sf-tp-search-panel">
<label for="sf-search">Enter a keyword</label>
<input type="search" id="sf-search" placeholder="Search products, brands, news, cases..." autofocus>
<div id="sf-search-count" aria-live="polite"></div>
<div id="sf-search-results"></div>
</main>