From 694465296645a03f77aff9e2ab04d455b3f6a38c Mon Sep 17 00:00:00 2001 From: Dai0814 <3490199389@qq.com> Date: Wed, 4 Nov 2026 15:36:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(portal):=20=E5=AE=98=E6=96=B9=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=AF=BC=E8=88=AA=E7=9B=B4=E6=8E=A5=E8=B7=B3=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E7=AB=99=EF=BC=8C=E4=B8=8D=E5=86=8D=E5=81=9C=E5=9C=A8?= =?UTF-8?q?=E6=9C=AC=E7=AB=99=E9=94=9A=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原先导航「官方文档」指向 /#docs(首页内的文档区块), 用户期望点它直接进 http://open.5iot.com:5051/docs/。 改动 - 导航项改为外链 http://open.5iot.com:5051/docs/, 带 target=_blank 与 rel=noopener,新开标签页不打断阅读 - 首页 hero 的「官方文档」按钮同样改为外链直跳 - 文档站地址收敛为单一来源:data/content.ts 导出 DOCS_BASE / DOCS_HOME, 可用环境变量 DOCS_BASE 覆盖;config.mts 与 HomePage.vue 都引用它, 消除原先三处硬编码 - 首页的「官方文档」区块(#docs)保留,仍是各手册入口的聚合卡片 验证 - 导航渲染实测:href=http://open.5iot.com:5051/docs/, target=_blank - 点击实测:新开标签页到目标地址,原页面 URL 不变 - 锚点项高亮不受影响(点「产品功能」仍正常变蓝) - 构建 13 页 262 引用 0 失效 --- .gitignore | 2 + .vitepress/config.mts | 67 +++++++++++++-- .vitepress/theme/components/HomePage.vue | 16 ++-- .vitepress/theme/components/ProjectList.vue | 90 +++++++++++++++++++-- .vitepress/theme/styles/portal.css | 25 ++++++ data/content.ts | 10 ++- pages/about.md | 2 +- pages/index.md | 2 +- pages/projects/index.md | 2 +- 9 files changed, 195 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index fa49853..a4239a7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ dist .vitepress/v4 .vitepress/v5 .vitepress/v6 +.vitepress/vbuild-check +.vitepress/v7 diff --git a/.vitepress/config.mts b/.vitepress/config.mts index 659491e..ef04a7c 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -1,5 +1,6 @@ import { defineConfig } from 'vitepress' import { projects } from '../data/projects' +import { docs, DOCS_HOME } from '../data/content' /** * 门户站构建配置 @@ -19,11 +20,42 @@ const DOCS_URL: Record = { iotlcm: 'http://open.5iot.com:5051/docs/', } +function tokenizeSearchText(text: string): string[] { + const terms = text.match(/[A-Za-z0-9]+|[\u3400-\u9fff]+/g) ?? [] + return terms.flatMap((term) => { + if (!/^[\u3400-\u9fff]+$/.test(term)) return [term.toLowerCase()] + if (term.length === 1) return [term] + return Array.from({ length: term.length - 1 }, (_, index) => term.slice(index, index + 2)) + }) +} + +const searchTranslations = { + button: { + buttonText: '搜索', + buttonAriaLabel: '搜索文档', + }, + modal: { + displayDetails: '显示详细结果', + resetButtonTitle: '清除搜索', + backButtonTitle: '关闭搜索', + noResultsText: '没有找到相关结果', + footer: { + selectText: '选择', + selectKeyAriaLabel: '回车', + navigateText: '切换结果', + navigateUpKeyAriaLabel: '上箭头', + navigateDownKeyAriaLabel: '下箭头', + closeText: '关闭', + closeKeyAriaLabel: '退出', + }, + }, +} + export default defineConfig({ srcDir: './pages', base: SITE_BASE, - title: '雪羊科技开源', - description: '雪羊科技开源项目门户:物联网卡管理、DTU 设备管理、中后台开发框架', + title: '雪羊科技物联网卡与设备管理平台', + description: '雪羊科技开源的物联网卡与设备管理平台:物联网卡管理、DTU 设备管理、中后台开发框架,Apache-2.0 许可', lang: 'zh-CN', cleanUrls: true, lastUpdated: false, @@ -31,7 +63,7 @@ export default defineConfig({ ['link', { rel: 'icon', type: 'image/svg+xml', href: `${SITE_BASE}favicon.svg` }], ], themeConfig: { - siteTitle: '雪羊科技', + siteTitle: '雪羊科技物联网卡与设备管理平台', logo: { src: '/snowgoat-logo.png', alt: '雪羊科技' }, nav: [ { text: '首页', link: '/' }, @@ -40,7 +72,13 @@ export default defineConfig({ { text: '界面预览', link: '/#preview' }, // activeMatch:进入任一项目详情页时「项目」保持高亮 { text: '项目', link: '/projects/', activeMatch: '^/projects/' }, - { text: '官方文档', link: '/#docs' }, + // 官方文档直接跳文档站(外站),不在本站内做锚点停留 + { + text: '官方文档', + link: DOCS_HOME, + target: '_blank', + rel: 'noopener', + }, { text: '关于', link: '/about' }, ], sidebar: { @@ -63,11 +101,30 @@ export default defineConfig({ { icon: 'github', link: ORG_URL }, ], footer: { - message: '雪羊科技开源 · Apache-2.0', + message: '雪羊科技物联网卡与设备管理平台 · Apache-2.0', copyright: 'Copyright © 雪羊科技', }, search: { provider: 'local', + options: { + translations: searchTranslations, + miniSearch: { + options: { tokenize: tokenizeSearchText }, + searchOptions: { combineWith: 'AND' }, + }, + _render(src, env, md) { + const html = md.render(src, env) + if (env.relativePath !== 'index.md') return html + + const homeSearchText = [ + '雪羊科技开源 首页 项目 产品功能 核心能力 界面预览 官方文档', + ...projects.map((project) => `${project.name} ${project.tagline} ${project.summary}`), + ...docs.map((doc) => `${doc.name} ${doc.desc} ${doc.project}`), + ].join('\n\n') + + return `${html}\n${md.render(homeSearchText, env)}` + }, + }, }, outline: { level: [2, 3], diff --git a/.vitepress/theme/components/HomePage.vue b/.vitepress/theme/components/HomePage.vue index 9643e0e..cebde16 100644 --- a/.vitepress/theme/components/HomePage.vue +++ b/.vitepress/theme/components/HomePage.vue @@ -6,6 +6,7 @@ import { productLines, coreAbilities, docs, + DOCS_HOME, } from '../../../data/content' @@ -14,10 +15,10 @@ import {
- APACHE-2.0 · 开源项目门户 -

物联网与中后台基础软件

+ APACHE-2.0 · 开源运营平台 +

雪羊科技物联网卡与设备管理平台

- 雪羊科技对外开源的项目集合。物联网卡管理、DTU 设备管理、中后台开发底座, + 我们对外开源的项目集合。物联网卡管理、DTU 设备管理、中后台开发底座, 同一套工程规范,同一个许可证,clone 之后就能跑起来。

@@ -27,7 +28,12 @@ import { - 官方文档 + 官方文档
@@ -214,7 +220,7 @@ import {

- 文档站地址:http://open.5iot.com:5051/docs/ + 文档站地址:{{ DOCS_HOME }}

diff --git a/.vitepress/theme/components/ProjectList.vue b/.vitepress/theme/components/ProjectList.vue index 96be2ee..4b921fc 100644 --- a/.vitepress/theme/components/ProjectList.vue +++ b/.vitepress/theme/components/ProjectList.vue @@ -12,14 +12,92 @@ import ProjectCard from './ProjectCard.vue' diff --git a/.vitepress/theme/styles/portal.css b/.vitepress/theme/styles/portal.css index b1ad7c3..d47f3a2 100644 --- a/.vitepress/theme/styles/portal.css +++ b/.vitepress/theme/styles/portal.css @@ -1050,3 +1050,28 @@ html.portal-nav-home .VPNavBarMenuLink.active:not([data-anchor-active]) { color: var(--vp-c-brand-1); } +/* ============================================================ + 左上角站点标题两行排版 + 第一行:雪羊科技(主标题) + 第二行:物联网卡与设备管理平台(副标题,更弱) + 副标题用 display:block 自然换行,无需
+ ============================================================ */ +.VPNavBarTitle .title-text { + line-height: 1.2; +} + +.VPNavBarTitle .title-text .site-subtitle { + display: block; + margin-top: 2px; + font-size: 11.5px; + font-weight: 500; + letter-spacing: 0.02em; + color: var(--p-ink-3); +} + +@media (max-width: 860px) { + .VPNavBarTitle .title-text .site-subtitle { + font-size: 10.5px; + } +} + diff --git a/data/content.ts b/data/content.ts index 21de24f..0387cc4 100644 --- a/data/content.ts +++ b/data/content.ts @@ -488,9 +488,15 @@ export interface DocEntry { /** * 文档站是随 iotLCM 发布的独立站点(VitePress),按手册分册。 - * 地址可用 DOCS_BASE 环境变量在构建时覆盖,见 .vitepress/config.mts。 + * 换域名或换端口时只改这一处;也可用环境变量 DOCS_BASE 在构建时覆盖 + * (与 .vitepress/config.mts 里的 nav 配置保持同一个来源)。 */ -const DOCS_BASE = 'http://open.5iot.com:5051/docs' +export const DOCS_BASE = + (typeof process !== 'undefined' && process.env?.DOCS_BASE) || + 'http://open.5iot.com:5051/docs' + +/** 文档站首页,供 hero 按钮与区块底部注释复用 */ +export const DOCS_HOME = `${DOCS_BASE.replace(/\/+$/, '')}/` export const docs: DocEntry[] = [ { diff --git a/pages/about.md b/pages/about.md index 5fcda35..220bc64 100644 --- a/pages/about.md +++ b/pages/about.md @@ -6,7 +6,7 @@ outline: deep # 关于 -雪羊科技开源项目门户汇集公司对外发布的开源项目。当前收录物联网卡管理平台(iotLCM)、DTU 设备管理平台(秀杰 DTU)与中后台开发框架(XiuAdmin)。 +雪羊科技对外开源的物联网卡与设备管理平台,汇集公司发布的开源项目。当前收录物联网卡管理平台(iotLCM)、DTU 设备管理平台(秀杰 DTU)与中后台开发框架(XiuAdmin)。 ## 许可证 diff --git a/pages/index.md b/pages/index.md index ca1cb59..684e7ed 100644 --- a/pages/index.md +++ b/pages/index.md @@ -1,7 +1,7 @@ --- layout: page title: 雪羊科技开源 -description: 雪羊科技开源项目门户:物联网卡管理、DTU 设备管理、中后台开发框架 +description: 雪羊科技开源的物联网卡与设备管理平台:物联网卡管理、DTU 设备管理、中后台开发框架 sidebar: false aside: false --- diff --git a/pages/projects/index.md b/pages/projects/index.md index 8e2f507..0aa5678 100644 --- a/pages/projects/index.md +++ b/pages/projects/index.md @@ -6,7 +6,7 @@ outline: deep # 全部项目 -雪羊科技对外开源的项目集合。三个项目覆盖物联网卡管理、硬件设备管理与中后台开发底座,全部以 Apache-2.0 发布。 +雪羊科技对外开源的物联网卡与设备管理平台。三个项目覆盖物联网卡管理、硬件设备管理与中后台开发底座,全部以 Apache-2.0 发布。