diff --git a/docs/sections-inventory.md b/docs/sections-inventory.md index 06e85e9bc..7d66ea643 100644 --- a/docs/sections-inventory.md +++ b/docs/sections-inventory.md @@ -133,6 +133,14 @@ 相关产品 4 列、CF7 表单、posts 卡片(postsData/shortcodes 上下文);产品 page_css 导入 130/138(8 篇原站 404);ACF 规格书/popup 动态按钮落地(spec_url 非 URL 回退 /contact-us/)。 剩余差异:内嵌 CF7/推荐卡片区高 +350~364、产品文档内少数版块为原站 lazy 占位差。 +- 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 传参修正)。 ### 3. 商城/产品/博客(WordPress 模板页) - SH1 商城:`/shop/` 分类+商品网格 diff --git a/package.json b/package.json index f75efa33c..5229bfd9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dusuniot-rebuild", - "version": "0.10.27", + "version": "0.10.28", "private": true, "type": "module", "scripts": { diff --git a/src/components/elementor/Renderer.tsx b/src/components/elementor/Renderer.tsx index 505357c1e..950cb7cb8 100644 --- a/src/components/elementor/Renderer.tsx +++ b/src/components/elementor/Renderer.tsx @@ -822,13 +822,15 @@ function WidgetNodeInner({ el }: { el: ElElement }) { return ; case "counter": return ( -
-
- {s(settings.prefix)} - {s(settings.ending_number) || "0"} - {s(settings.suffix)} +
+ +
+ {s(settings.prefix)} + {/* ending_number 为数值(about-us 计数器 3000/100 等),s() 只收字符串 */} + {String(settings.ending_number ?? "") || "0"} + {s(settings.suffix)}
-
{s(settings.title)}
+
{s(settings.title)}
); case "shortcode": diff --git a/src/components/elementor/slim.ts b/src/components/elementor/slim.ts index 00a7fcfb7..94027082d 100644 --- a/src/components/elementor/slim.ts +++ b/src/components/elementor/slim.ts @@ -122,6 +122,11 @@ const SETTING_KEYS = new Set([ "prefix", "suffix", "ending_number", + // counter 排版(about-us 页面级 CSS 覆盖 69px;设置里的字号/字重键) + "typography_number_font_size", + "typography_number_font_weight", + "typography_title_font_size", + "typography_title_font_weight", "icon_list", "social_icon_list", "slides", diff --git a/src/components/website/catchall-shared.ts b/src/components/website/catchall-shared.ts index a960fc29d..454be8b95 100644 --- a/src/components/website/catchall-shared.ts +++ b/src/components/website/catchall-shared.ts @@ -1,6 +1,7 @@ /** * # 模块 catch-all 页面共享逻辑($.tsx 只导出 Route) */ +import { resolveImageVariants } from "~/utils/image-variant"; import { getPublishedContent, listPosts, type PostCardItem, type PostListItem, type ProductListResult } from "~/server/data"; import type { LayoutData } from "~/components/website/Layout"; import type { ElElement } from "~/components/elementor/Renderer"; @@ -65,6 +66,9 @@ export const LANG_NAMES: Record = { /** # 函数 把内容行收窄为可序列化结构(meta/terms/jsonb 处理) */ export function pickContent(row: NonNullable>>): CatchAllData["content"] { + // image widget 的 WP 尺寸变体解析(服务端;about-us 等 elementor 页的 thumbnail 图) + const metaRow = (row.meta ?? null) as Record | null; + if (metaRow) resolveImageVariants(metaRow.elementor); return { slug: row.slug, type: row.type, diff --git a/src/routes/$.tsx b/src/routes/$.tsx index 37e0b4ae3..1fc712b6b 100644 --- a/src/routes/$.tsx +++ b/src/routes/$.tsx @@ -310,6 +310,7 @@ function CatchAllPage() { ) : null} | null)?.page_css === "string" ? ((data.content!.meta as Record).page_css as string) : undefined} postsData={data.postsData} shortcodes={ Object.keys(data.templates || {}).length diff --git a/src/styles/app.css b/src/styles/app.css index 3fa007bc3..1cca8c639 100644 --- a/src/styles/app.css +++ b/src/styles/app.css @@ -119,6 +119,9 @@ /* # 成员变量 兼容变量:数据库 HTML 兼容样式与少量内联 style 仍引用旧变量名 **/ :root { --brand: #ed6c00; + /* Elementor 全局色(页面生成 CSS 引用:page_css 的 var(--e-global-color-*)) */ + --e-global-color-primary: #ed6c00; + --e-global-color-4d5c430: #1c2b3a; --brand-dark: #c85600; --ink: #1c2b3a; --muted: #5f7183;