Files
dusuniot/docs/sections-inventory.md
T

247 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dusun IoT 复刻 · 页面类型与版块清单
> 目标:以「页面类型 → 版块(自上而下)」为单位 1:1 复刻 dusuniot.com,一个版块一个版块做,
> 不一次做整页。每版块验证后交付一次版本号 +patch。
>
> 状态图例:
> ✅ 已按原站逐像素对齐(有截图对照) | 🟡 有基础渲染但未对齐原站 | ⬜ 未做 | ⚪ 纯文本页,优先级低
## 一、页面类型清单(共 10 类)
| # | 页面类型 | 路由(对本站) | 原站对应 | 版块数 | 数据来源 |
|---|---------|-------------|---------|-------|---------|
| 1 | 首页 | `/` | `/` | 20 | DB `contents` slug=home 的 Elementor 树 |
| 2 | 产品分类列表/落地页 | `/collection/$slug` | `/smart-gateways/` `/product-category/…` 等约 60 个入口 | 4(落地主题区…侧栏筛选…) | 分类(16 个 product_cat)+ 同 slug 落地文 |
| 3 | 方案页 | `/solution/` 与 `/solution/$slug` | `/solution/` 及各方案营销页 | 列表页 + 落地页(每页自定) | posts(solution 分类)+ `/solution/` 页 |
| 4 | 商城列表 | `/shop/` | `/shop/` | WordPress 模板 | products 表 |
| 5 | 产品详情 | `/product/$slug` | `/product/…` | WooCommerce 模板 | products 表 |
| 6 | 博客 | `/blog/` 与 `/blog/$slug` | `/blog/` | WordPress 模板 | posts 表(639 篇) |
| 7 | 公司/品牌页 ×7 | — | about-us / research-development / certification / after-sales-service / faq / distributor / login | 2~24 各异 | 各自 Elementor 树 |
| 8 | 合规/法务页 ×4 | — | privacy-policy / terms-of-service / refund_returns / cookie-policy | 1~2(富文本) | 各自 Elementor 树 |
| 9 | 商务流程页 ×4 | cart / checkout / my-account / search | 站内功能 | — | carts / orders |
| 10 | 管理后台 | `admin.*` | (本项目新增,不属复刻) | — | — |
## 二、通用版块(全局组件)
| # | 版块 | 状态 | 组件 |
|---|------|------|------|
| G1 | 顶部导航 Header(含 mega menu、语言切换) | ✅ v0.10.3 | `Header.tsx` |
| G2 | 页脚 Footer(原站 elementor_library post 58) | ✅ v0.10.19 | `Footer.tsx`(ElementorRenderer 直出 46d7afa/d834160/28c7f0b8/a428bb4 + menu-2 移动菜单 + gtranslate 下拉) |
| G3 | 询价弹窗/表单(原站 Elementor popup 1129 + CF7 表单 604) | ✅ v0.10.20 | `InquiryPopup.tsx`(全局监听 popup 链接 + 弹窗 DOM + 表单提交入库) |
## 三、首页版块清单(自上而下,20 版块)
| # | 版块名(取标题) | 内容(Widget 组成) | 状态 |
|---|----------------|-------------------|------|
| H0 | Banner 轮播 | slides ×4(Swiper,fadeInUp 内容、5000ms 自动播) | ✅ v0.10.3 |
| H1 | 公告滚动条 | eael-content-ticker | ✅ v0.10.4(badge 18px/600、内容 #222 hover #ED6C00、fade 200ms/5000ms、1300px 容器、bg #F4F5F8,数据取最新 3 产品) |
| H2 | 产品线入口 ×6 | image-box ×6(6 条产品线图标卡) | ✅ v0.10.5(图片上方图标+标题 16px/400/#333、figure 30% 宽、hover 亮度 90%、五列右侧 v-line 竖线、列 10px 内边距、≤767 50% 两列;ImageBoxWidget 重构为 Elementor 忠实 DOM 供 H13/about 复用) |
| H3 | 「Dusun Hardware & Service」标题条 | heading | ✅ v0.10.6(Poppins®600/40px/48 行高/#000 居中、widget 底 padding 24px、section 上 padding 64px;Poppins 与原站一致走系统 fallback 不载字体文件;typographyCss/_padding/resolveGlobals 修复基建) |
| H4 | 硬件与服务系列 ×5 组 | 每组 heading+text+image+eael-info-box ×2(五列卡组) | ✅ v0.10.7(heading 橙线下划线/20px/#333、text-editor BFC 62.4、image widget link/shrink 动画、eael-info-box icon-on-left 完整结构、列卡渐变+边框+margin 折叠(实测 sec 529.6/列 513.6/inf2 y1429.4 与原站一致);WidgetNode 双层容器(elementor-widget + widget-container)对齐原站 margin 折叠语义) |
| H5 | 可定制/易生产 双主张条 | heading ×2(双栏大字) | ✅ v0.10.7(long-arrow 背景条、列 380、文字 20px/500/#fff 单行、arrow 194×39) |
| H6 | 从概念到量产 宣言条 | 全大写 heading(ACCELERATE YOUR IOT DEVICE LAUNCH…) | ✅ v0.10.8(Poppins 24px/600/行高 1 由 DB 内联、≤767 20px、列 59bc2e1 四向 10px、sec 根 padding 10px,五层盒模型 y 全对齐 0.8px 页级漂移内) |
| H7 | OS/芯片平台/语言/协议 四列 | heading ×4 图标列 | ✅ v0.10.8(外卡 66de90a 渐变+边框+圆角 8/16/16/0、四列 335.5 虚线分隔、_element_width:auto 图标横排 4+3 换行、el-w-auto 双层类修复 width:100% 强推回归) |
| H8 | 热门嵌入式硬件 标题 | heading(Popular Embedded Hardware Products…) | ✅ v0.10.9(heading 40px/600/#000/行高 1 居中 x38/w1360;section 7df0244 gap=no→列 0px、margin-top 4%=57.4375px、bg #F4F5F8、padding 64px 0——section 级 margin/gap 渲染支持随此版块落地,slim 白名单补 gap) |
| H9 | 热门硬件切换器(tabs) | Elementor 原生 tabs widget ×6 标签(内容为自包含 HTML 卡片网格) | ✅ v0.10.9(TabsWidget 忠实 DOM+React 点击切换/aria;widget-tabs.min.css 基础块+fd97340 生成规则(border_width=0 含伪元素)+custom_css(.ele-soms-chip-dif 边框/内容覆盖)三层取证;全局修正 body 行高为无单位 1.5、补 kit 链接字体 Roboto(卡片 <a> 经 .elementor-kit-15 a 规则用 Roboto,否则 Arial 截断致规格多折一行);实测仅 0.8px 页级漂移) |
| H10 | Smart Apartment Gateway 规划模块 | html widget(17.9KB 自包含 HTML+CSS,无 JS) | ✅ v0.10.10(html widget 路径补 localSiteUrl 媒体改写、去掉内层 mb;补 Elementor 全局 figure margin 0(text-editor 例外)与 kit 标题排版(.elementor-kit-15 h1..h6 → Roboto 600/500,h2 38px)——H10 h2 由 kit Roboto 渲染换行点才与原站一致;sec h 674.8 与原站全等,3 图全载 |
| H11 | Dusun IoT Developer Center 三卡 | heading+text+内嵌 section 三列卡(heading/image/image-box 行/button) | ✅ v0.10.11(heading 40/600、text 20px/_padding 4rem;三列 453.33-margin→443.33(实测原站 populated flex 收缩语义,该三列 scoped width auto);image-box pos-left 行布局(flex 居中/图 18%/间距 15/标题底距 4px);按钮设置驱动(白底橙字/1px 边框/12px 48px/18px+悬停注入);节背景=电路板条图 bottom center+no-repeat+F4F5F8→透明渐变遮罩(.elementor-background-overlay 通用实现,行 relative 防蒙灰);全局:全零 _margin 不覆盖 kit-spacing、0.9rem p 边距、html widget localSiteUrl/去 mb、Elementor figure margin 0(text-editor 例外)、kit 标题 Roboto 600/500(h2 38px)、按钮 collapseBoxValues 边框) |
| H12 | Industries and Use Cases | heading + eael-adv-tabs(6 标签,内容自包含 HTML) + button(ef0fcd9) | ✅ v0.10.12(AdvTabsWidget 忠实 DOM+React 切换(li id/data-tab/aria-controls)、active #ED6C00/文字 #333/bg #F4F5F8/li 底边 3px(默认同背景色,active/hover 变橙,故 li 高 59)、内容面板 padding 16px 0 0+顶边 1px #C7CBDA、id=<slug>-tab;标题 40px Poppins 居中、按钮 8390e24 设置驱动实测全等;随此版块修复:image-box 垂直对齐 content_vertical_alignment(middle→center,防 fig 被拉伸)、figure 内 <a> 块化(消 2px 行盒下伸)、ec11f3f 图宽 30% 仅存 post-18 生成 CSS 的补规则、AdvTabs 标题 Roboto;实测 H0-H12 各 section 高度全等,页级漂移 0.8px) |
| H13 | Difference Maker 供应商主张条 | heading 5706426 + text c83a5d3 + icon-list 002494b(3 描边链接) + 内嵌 section 931e838(左文右空+楼体图) | ✅ v0.10.13(heading 40/600/#000 左对齐;text fs 1.375rem + _margin -1rem 折叠(widget h 15.4 机制与原站一致);icon-list inline 视图 3 描边链接(custom_css .ele-supplier-dif 边框盒/悬停橙,li 213.7/190.4/206.2 全等);楼体大图=列 bf3d0ba 背景 bottom left+100% auto;随此版块落地:IconListWidget 忠实 DOM 重写(inline-items flex 对冲边距)、列背景 background_size(initial→100% auto)/position/repeat 全量并入、icon-list 基础 CSS、悬停主色规则;相对几何逐项全等(183.4/251.4 等),截图目视一致。注意:orig 侧 H12 面板渐进展开致整页 y 多次测量间漂移,以节内相对坐标为准) |
| H13.5 | counter 统计条 ×6 | 9084925:6 列 image-box(图标+数字标题+描述) | ✅ v0.10.14(双端节内相对几何/样式 JSON 逐字节一致:sec h 235、列 226.7×179 padding 20/16/16/36 + 边框 1px 0 1px 1px #E0E5F9(globals ee1917e,末列四边)、图标 30% 宽(仅存 post-18 生成 CSS,scoped 补规则)+image_space 6px、标题 36px/700/#ED6C00/lh54+mb4(㎡ 内联 span 1.5rem)、描述 18px/#333/lh27;随此版块:image-box 支持 title_typography_*/description_typography_*/image_space/text_align(进 slim 白名单)+title_color 落样式) |
| H14 | Why Choose Dusun IoT | heading + eael-info-box ×4(工厂底图深色节) | ✅ v0.10.15(审计 0 差异:heading Poppins 40/600/#FFFFFF(globals 4d5c430)居中 + _padding 底 12px;4 卡 680×294 白底圆角 6、padding 16/40/32、margin 右 8/左 8 + 底 16(两行卡间距 0——随此修复:kit-spacing 20px 排除内嵌 section、populated 宽 100%→auto 扣水平 margin,H14 680-8=672);info-box 标题 20px/700/#0D152E + 图标背景 44×44/lh66/下划线(custom_css 注入)、药丸 li 2px 10px/圆角 16/边框 #C7CBDA、ul margin 0(hello reset,scoped);随此版块:EaelInfoBoxWidget 标题排版/颜色(eael_infobox_title_typography_*/_title_color 进白名单)、内容 div 直出不包 p) |
| H15 | Trusted By 世界领先品牌 | heading + text + 3 行×5 列 logo 格(9 图 + 6 空占位) + 世界地图底图 | ✅ v0.10.16(审计仅剩口径/亚像素 3 项:heading 40/600/#000 + _padding 左右 10%、text 20px/_margin 顶 10/_padding 9rem、space_between_widgets=0 列内间距 0(scoped 覆盖 kit-spacing)、三行 logo 列 populated flex 纵向垂直居中 + 扣 margin(scoped auto,272-16=256)、列 margin 8px + 边框 #474DFF26 设置驱动、空占位列裸渲染(原站无 populated 盒,margin/边框 0)、logo 图 254 宽 text-align center(Elementor image widget 默认);节 margin-top 3.5%+padding 底 4.5rem;随此版块:ColumnNode 空列裸渲染、populated 语义辨析(H4 溢出=基线 100%,H11/H14/H15 扣减=scoped auto)——曾试基线改 auto 致 H4 -7.7 回归后回滚) |
| H16 | Developer Ecosystem | heading ×2 + 内嵌 section 两卡(heading+text+button/social-icons+image) | ✅ v0.10.17(审计 0 差异:节 ab35847 bg #F4F5F8 + heading 40/600/#000(_padding 10%)+副题 20px/_margin 顶 -6;两卡 680×528.4 白底圆角 6 边框 #E0E5F9、padding 48/48/16、margin 12(populated 扣减 scoped)、卡标题 24/700/#0D152E、文本 18px/_padding 3rem、Join Now 白底橙字 12px 56px、图 544×282 居中;随此版块:SocialIconsWidget 忠实重写(wrapper grid gap 10/a 44×44 官方底色 linkedin #0077B5/youtube #CD201F/facebook #3B5998/圆角 10%/白色字形)+FA Brands 字体子集(public/fonts/fa-brands-400.woff2 + 三码位 content 规则)+elementor-animation-shrink 通用类) |
| H17 | News & Updates 标题 | heading | ⬜ |
| H18 | 最新博文 ×2 | 8bc6b68:左 posts 卡×2(3025217)+右 Latest blogs>>标题(1c96d68)+posts 列表×5(a22c185) | ✅ v0.10.18(双端节内几何/样式全等(sec 521):左 skin-cards grid 335×2/gap 16 10、卡 520 高(custom_css .ele-post-dif)、缩略图比率 0.66×内宽+img 铺满、NEWS 徽章(uppercase/白 70%/12px/圆角 4,绝对右上)、标题 18/400/#000+mb16、日期 F j,Y/#ADADAD/padding 10 12、摘要 18 词/#767676/底距 44(空摘要回退正文 18 词);右列卡 grid 630、卡 bg #F4F5F8/圆角 3、纯标题 44px 两行钳制+右侧箭头图标(custom_css);Latest blogs>> 标题 24px+#E0E5F9 下划线+橙线图背景;随此版块:PostsWidget 忠实重写(PostsDataContext 预取架构:loader 按 widget 收集 posts_include_term_ids→listPostsByTermLegacy)、posts cards 基础 CSS、slim 白名单 cards_* 全键、**数据修复** scripts/repair-content-terms.ts(从 legacy dump wp_term_relationships 补 1162 条分类关联,Blog 302/News 22——原导入仅 61/609 篇有关联)) |
| H19 | Explore more DusunIoT news > | 83ecbc5:button 居中 | ✅ v0.10.18(随 H18 交付自然对齐:节 h 123 与原站全等(dy 0.8 页级漂移),按钮设置驱动(白底橙字描边,ButtonWidget 通用实现)。**首页内容树 H0-H19 全部完成**;原站 home 页另有 4 节(46d7afa/d834160/28c7f0b8/a428bb4)属页脚 Elementor 模板,已由 G2 v0.10.19 以原模板直出全覆盖) |
## 四、其他核心页型版块(自上而下,概览)
### 1. 产品归档/列表页(原站 /shop/,4 版块)
- C1 归档 hero:Elementor 模板 post 1398 的 a2ab15c(面包屑 Home / Shop,bg #F4F5F8)✅ v0.10.21
- C2 侧栏筛选:WPC Filter Everything(12 组属性复选、计数、See more、末三组折叠)✅ v0.10.21
- C3 商品网格:WooCommerce 归档 24 卡 4 列(图/标题/Read more,Elementor skin)✅ v0.10.21
- C4 排序 + 分页:orderby 下拉(默认 menu_order)、结果计数、页码/箭头分页 ✅ v0.10.21
- 说明:分类 URL(/product-category/*)在原站多数 301 到 landing-pages/*(Elementor 落地页,
归方案/落地页页型);/shop/ 才是 WooCommerce 归档版块,已按模板 1398 直出 +
ShopFilters/ShopProducts 注入。筛选 URL 用查询参数(原站 WPC 为 /shop/type-som/ 美化链接),
术语顺序/计数来自导入数据(term taxonomy 顺序 + product_attribute_map 计数)。
### 1b. 落地页 /landing-pages/$slug(智能网关页已校对,v0.10.23 ✅ 桌面全对齐)
- 原站落地页为 post(如 smart-gateways legacy 6509)Elementor 直出,经 catch-all 路由渲染。
- smart-gateways 15 节桌面端全部与原站对齐(v0.10.23 复测:541ea84/49dcb11/dcfbe08/f9e27ce/
eb3462a/de5742a/9b87079/7c15af8/68babbb/028b4bc/5745b4f/2fee235/391a1ee/a36c301 逐节
高度 ≤1px;8e90920 按真实 JS 激活态 822.4 = 原站注入 active 后实测 822.4;页脚 590.5)。
- v0.10.23 修复:
- 391a1ee toggle 换成 Elementor 原生 DOM(默认全收起、h3 28/1/700、标题 1.125rem、
图标 caret-down/up 左浮动 1em+12px、item 间距 4、内容 .875rem、FAQPage JSON-LD),
桌面节高 496 / 移动 536 与原站全等;标题移动端响应式字号(1.5rem)补进
collectResponsiveCss。
- a36c301 内嵌模板:新增 scripts/import-embedded-templates.ts 导入 elementor_library
post 27143(slug=template-27143);catch-all 路由扫描 `[elementor-template id="N"]`
短代码加载模板并注入渲染,同时预取 posts widget(多分类并集 53/54/703,发布时间倒序)。
- posts widget 按 widget-posts.min.css cards 皮肤重写:meta 移到 text 之后(border-top +
margin-top:auto)、badge 仅在有缩略图时渲染且绝对右上、缩略图 img 静态宽度 calc(100%+1px)、
比率/内距/字号/边框全部按设置内联;桌面 H18 卡片图高 220.6/187.9(原站 220.4/188.1)。
- 列 populated 宽度:新增 06632bb/3361c18/3317056/5938d26 的 auto 扣除规则(570 vs 580)。
- info-box:p 外距/颜色(eael_infobox_content_margin/color)、图标型 info-box
(eael_infobox_icon_new/icon_size,fa-check-circle 码位)、标题行高;
- 按钮:图标型按钮 wrapper 2px 行盒(原站 inline-block 基线导致 28px 高)。
- 已知数据差异:内嵌模板 posts 取本地快照(dump 2026-10-29),原站已新增 161855/161748
两篇(11-02/10-30),故卡片内容与原站当前列表不同;版式/卡片尺寸一致。
- 移动端待细化:EAEL tabs 原站 headless 未初始化无法直接取基线;posts 图片经由
srcset/medium 变体,个别卡片高度 ±5px。
### 2. 方案页
- S1 `/solution/` 列表入口页 v0.10.25 ✅ 一比一复刻原站 Elementor archive(widget 2da75291):
hero #eee 120px(h1 40px/900 uppercase 居中)+ 卡片 grid 3/2/1 列 gap 28 + 缩略图 66%/50% 占位、
::after 黑 35%→75% 渐变(hover 1→0.5)+ 卡片阴影 0 0 10px(hover 30px)+ 标题 21px #ED6C00 +
摘录 14px/1.5 #777(24 词截断,&nbsp; 相连算一词)+ 分页(当前页 #FFA11B);新增
/solution/page/N/ 分页路由与摘录/卡片数据(8 篇 excerpt 按原站回填);桌面/平板/移动三断点
hero/卡片/分页几何差 ≤2px。
- S2 `/solution/$slug` 落地页 v0.10.25 ✅ 渲染器补齐:
- Renderer:populated 宽度改标准块级 auto(margin 收缩,6c765c4 卡列 272/272 精确)、
tabs 标题按 HTML 渲染、_css_classes 落到 section/column/class 上;
- page_css 导入管线(scripts/import-page-css.ts):抓原站 post-<legacy_id>.css,把
.elementor-element-<id> 与 .ele-* 自定类规则翻译为 [data-el] 选择器存 meta.page_css,
ElementorRenderer 注入(补齐 dump 缺失的 widget 级 custom CSS,如 infobox 图 80px);
- reviews 评价区重写为 Elementor 原生 reviews DOM(2 列 slide、79px 圆形头像、
星 14px #CCD6DF、职位 16px #697882、评价图 50% 居中);
- Header 全断点对齐原站(topbar 36px/容器 1350/文字 16px、图标 36×36 gap10 顺序
Linkedin-Youtube-Facebook、无 Login;主导航容器 40/25、logo 后 80px、菜单序
Resources→Success Stories 修正、菜单项 pad 8/6 距 6、caret 16px、搜索 40×68、
CONTACT US/邮件/语言 48px;平板汉堡形态、移动 48px 导航+气泡);菜单序为 DB 数据修正。
- 已知数据差异:smart-home-solution 原站 2026-10-16 改版新增内层版块(2faa053 等不在
dump 快照),9dc5c01 场景区较原站矮约 1540px,属快照滞后;其余 13 个落地页全部版块
齐全,逐节高度差 >15px 的多数为原站 headless lazy/swiper 未初始化假象。
- B1 `/blog/` 归档 v0.10.26 ✅ 一比一复刻原站 archive_cards 皮肤:缩略图 66% cover 盒、
右上角分类徽章 #FFA11B 圆角 999、标题 21px(margin 25)、摘录 24 词截断、Read More »、
meta(#EAEAEA 分隔线 + 作者/日期 12px #ADADAD);/blog/page/N/ 分页路由;分页窗口算法
WP paginate_links(end 1/mid 2,两端组件共用);数据源为 category-blog 归档。
- B2 `/blog/$slug` 文章详情 v0.10.26 ✅ single 模板复刻:hero(blog-tem-bg 背景图、
rgba(158,206,255,.1) 面板、h1 28px/600 白、摘要、updated/published 白色日期条、特色图)
+ 面包屑条(Home/Blog/标题)+ 三列正文(分享竖栏 60 / 正文 776 / 侧栏 360,容器 1200);
侧栏 = 社交图标 + CONTACT US 表单 + IoT Gateways 折叠组;正文 Elementor 直出 +
pageCss + 图片 WP 尺寸变体解析(medium→-300x272 类文件,服务端目录扫描缓存)。
- page_css 导入扩展至全部文章:254 篇有 post-<id>.css 已导入,355 篇原站 404(无自定义 CSS)。
- 已知数据差异:/blog/ 本地 category-blog 302 篇(26 页)vs 原站当前 7 页(dump 后原站
调整了分类成员);文章内文逐节高度仍有数据快照/lazy 假象差。
- P1 产品详情 `/product/$slug` v0.10.27 ✅ 产品单模板一比一(elementor_library 2741,从
legacy dump 补录入库 slug=product-template;内嵌模板 29972「IoT Gateways for
Recommendation」同步补录):hero 图廊 484×617/标题/meta(Model/Category)/短描述精确、
数据标签页(Description 面板嵌产品自身 elementor 文档 + Additional information 属性表)、
相关产品 4 列、CF7 表单、posts 卡片(postsData/shortcodes 上下文);产品 page_css 导入
130/138(8 篇原站 404);ACF 规格书/popup 动态按钮落地(spec_url 非 URL 回退 /contact-us/)。
剩余差异:表单区高 602 vs 564(提交行 +38)、产品文档内少数版块为原站 lazy 占位差;
表单栅格(1-4 两列/5-7 三列/textarea 通栏 + UTM 隐藏 p display:contents 折叠)已按取证落地。
- about-us v0.10.28 ✅ 公司页校对:49/56 版块 ≤15px。修复:
- counter 组件重写为 Elementor DOM(number-wrapper/title,低特异性默认样式让 page_css 覆盖),
ending_number 数值渲染修复(s() 丢数字 → String());
- 数据回填(dump 后原站改动):计数器 ending_number 100/20、69px/600 数字排版、
844aa8d min-height 400;
- 全局:--e-global-color-primary/4d5c430 变量定义(page_css 引用);
- page_css 导入扩展到全部 page(14 篇)+ catchall 渲染传 pageCss + pickContent
调用 resolveImageVariants(meta.elementor 传参修正)。
- 公司副页扫描 v0.10.29 ✅:certification 8/8 ✓、research-development 12/15(视频 widget
宽度 900 vs 1200 待细化)、faq 16/17(toggle 组件样式回归 Elementor 默认——16px/400/#333/
下边框/透明底,落地页 #F0F1F5 皮肤改由各页 page_css 注入,全局不再固化);
after-sales-service 数据待核。
### 3. 商城/产品/博客(WordPress 模板页)
- SH1 商城:`/shop/` 分类+商品网格
- P1 产品详情:标题、参数表、图集、询价 CTA(依原站 Woo 模板)
- B1 `/blog/` 列表:卡片+分页
- B2 `/blog/$slug` 详情:正文渲染(WP 样式)
### 4. 公司/品牌页
| Slug | 标题 | 顶层版块概览 | 备注 |
|------|------|-------------|------|
| about-us | About Dusun IoT | 24 版块:hero 图集、视频区、4 项数据 counter、里程碑、认证/展会/研发/语言能力等 | 最重的一页 |
| research-development | Research & Development | 5:标题、视频、info-box ×3+3、info-box ×9 | |
| certification | Certification | 2:文案+按钮;html ×2(证书大全) | |
| after-sales-service | After Sales Service | 2:标题;目录+文本长块(table-of-contents) | |
| faq | FAQs | 2:标题;目录+10 组 toggle 手风琴 | |
| contact-us | Contact Us | 1:标题+地图/联系方式 ×9 列表+社媒+表单(CF7 表单→改造) | v0.10.24 ✅ hero 通栏+表单卡叠压;CF7 604 忠实复刻(两列字段/下拉/acceptance/reCAPTCHA/spinner 占位),提交走 submitInquiry;地址列 #F5F7FF+pin 图标+社交;桌面差 ≤2.3px、移动列差 ≤1px |
| distributor | Distributor | 2:图+文+按钮;图区 | |
| login | Login | 1:登录注册表单 | |
### 5. 合规页(⚪ 只需 WP 正文样式统一)
privacy-policy / terms-of-service / refund_returns:标题+目录+正文。
cookie-policy:19 段纯文本。
## 五、复用组件策略(一批版块落下后沉淀)
| 组件 | 首次出现 | 复用页 |
|------|---------|--------|
| `SectionTitle`(中/左对齐大标题规范) | H3 | H8/H11/H14/H17、分类/方案/博客各页 |
| `IconBoxGrid`(eael-info-box 四列) | H4 | H14、R&D、分类落地页 |
| `ImageBoxGrid`(image-box 卡片行) | H2 | H13、about、distributor |
| `MediaTextRow`(图+文+按钮左右组合) | about [5] | about、recru-letter、distributor |
| `LogoWall`(灰度 Logo 行) | H15 | about |
| `TabsRow` / `AdvTabs`(左标签+右面板) | H10/H11 | 分类落地页 |
| `PostCardGrid`(posts widget 列卡) | H18 | 博客列表、分类页尾部 |
| `CTAButton`(红/描边大按钮,含 hover) | H19 | 全站尾部 CTA |
| `TickerBar`(滚动公告) | H1(v0.10.4 已落地 `src/components/website/TickerBar.tsx`) | 全站头部下方 |
| `CounterStats`(数字滚动统计) | about [3] | 方案页 |
| `VideoEmbed`(视频框) | about [2] | R&D |
| `TocText`(目录+层级文本,合规/售后页共用) | after-sales | terms、privacy、cookie |
## 六、执行顺序(与用户确认后逐项推进)
1. **首页自上而下**:H1(公告滚动)→ H2…H19,每版块对照原站截图核验后交付 +patch。
2. **产品分类列表页**(2 类入口最多、复用公共组件最多)。
3. **方案页/商城/产品详情/博客**。
4. **公司页**(about-us 24 版块最后收拾)。
> 每完成一个版块:与原站同页同区截图对比 → 头less Chromium 验算 computed style → 版本号 +1。
>
> 取证基建补充(v0.10.8/v0.10.12):原站 EAEL 样式实际加载 `uploads/essential-addons-elementor/eael-18.css`
> (合并包),并非 `view/*.min.css` 单件——后续 H9/H11 等 EAEL 版块以 eael-18.css 为准;
> Elementor 通用布局三要素已落地 Renderer:section 根 padding、列 gap 默认 populated padding
> (no 0/narrow 5/default 10/extended 15/wide 20/wider 30)、widget-wrap flex wrap + 子元素 width:100%
> + `_element_width:auto` 例外。
>
> **G2 页脚取证(v0.10.19)**:原站页脚为 elementor_library post 58(两节 46d7afa/d834160 +
> 内嵌 28c7f0b8/a428bb4),导入脚本 `scripts/import-footer-template.ts` 从 legacy dump 取
> `_elementor_data` 写入 contents(type=template, slug=footer);快照之后的线上改动按线上
> post-58.css/DOM 补齐(f95e22e Google 徽章、405d251 width:auto、2481635 桌面外距)。
> 1436 实测(GTranslate 下拉已渲染、懒图已加载):页脚总高 590.4 两端一致,列宽
> 228/319.2/307.8/285、内层 615.6/171/193.8/159.6、logo 144.8×42.7、社交行 150×29、
> 下拉 202×39 全部全等;390 实测逐项全等(56/15/347/337/97/46.4/61)。
> 注意:原站 headless 下 WP Rocket 延迟加载 Elementor/jQuery,JS 组件(tabs/swiper)默认不初始化,
> 比对该类版块需先 `page.mouse.wheel` 或按线上真实状态换算,勿把"未初始化"当基线。
>
> **G3 询价弹窗取证(v0.10.20)**:全站 24 处 “Make an Inquiry”/按钮均为
> `#elementor-action:action=popup:open&settings={"id":"1129"}`(base64),对应 popup 1129,
> 内含 EAEL Contact Form 7(表单 604:Name/Company/Business email/Phone/Product/Interest/
> Annual Demand/Message + acceptance + reCAPTCHA 声明)。实现为全局 `InquiryPopup`:
> 文档级委托点击 → 渲染 Elementor 弹窗 DOM(遮罩 rgba(0,0,0,.8)、700px 白卡、close 20/20),
> 表单样式按 popup 生成 CSS(padding 2em 3em、字段 48%/31.3%、#C9CEE8 边框、textarea 134px、
> 按钮 #ED6C00→#FFA11B、圆角 10)与 EAEL 默认(input 8px 16px/高 42),提交走 submitInquiry
> (form_key=contact-form-1),成功显示 CF7 原文提示;弹窗内社交图标 5 个(20px/间距 14/品牌色)。
> 实测 1436:白卡 700×737 居中、两列 289.9/三列 189、消息框 604×153;390:宽 390、p5/p6 两列、
> p7 全宽,与 popup 自定义 CSS 一致;提交入库验证后已清理测试数据。
>
> **C1-C4 产品归档取证(v0.10.21)**:原站 /shop/ 使用 archive 模板 post 1398
> (scripts/import-shop-template.ts 导入 contents slug=shop-archive),/collection/ 路由直出
> 模板外壳并注入 ShopFilters(widget 98d2008)/ShopProducts(d761846)。1436 实测:
> hero 52.8、shop 节 2906.7(左列 275.2/右列 1100.8、列高一致)、筛选区 2798.7(12 组,
> 标题 44/灰底、行高 20.8、组距 32;CPU/OS/Interface/RAM/Flash 默认 5 项 + See more,
> Battery/Operating/Install 默认折叠)、H1 24/600、结果计数“Showing 1–24 of 138 results”、
> 商品网格 2523.3(24 卡 4 列 gap 10,卡 257.7×409)、分页 y2855 margin-top 40;
> 筛选 SoM → 22 条、排序 date、See more 5→17、分页 page2 均通过。默认排序改为
> products.meta.menu_order(scripts/import-product-menu-order.ts),术语顺序改为
> taxonomy 顺序(scripts/import-attribute-term-order.ts)。
## 七、已知遗留(非当前版块范围,后续版块收口)
| # | 现象(实测 2026-11-01,1436/390px 视口) | 归属 | 优先级 |
|---|---|---|---|
| 1 | 移动端(≤767px)Header 高度差 ~21px(原站 slides y=88,本地 109) | G1 Header 移动端 | 中 |
| 2 | 移动端 H1 ticker 高度差 ~14px(原站 117,本地 131.2) | H1 ticker 移动端 | 中 |
| 3 | 全局 `a:hover` 为 --brand-dark(#c85600),kit 全局 secondary 是 #FFA11B | G1/全局样式 | 低 |
| 4 | PG 连接曾被 stale vite dev 进程(3311 端口)泄漏占满(290 连接),已清理;重复发生时检查残留 dev 进程 | 环境 | 记录 |
| 5 | 内嵌模板文章列表取 dump 快照,原站新增文章(161855/161748)尚未导入,卡片内容不同步(版式一致) | 内容数据 | 中 |
| 6 | posts 卡片移动端个别卡高 ±5px(原站 srcset 选 768/medium 变体,本地用原图;宽高比略有差异) | posts widget | 低 |
| 7 | dev 脚本须用 `bun --bun vite dev`:纯 node 下 Vite module-runner 无法解析 Bun 内置模块;vite.config 已把 "bun"/node:* 标记为 ssr builtins | 环境 | 记录 |