2.8 KiB
2.8 KiB
前台积木页面(动态路由)
概念
- 在 网页管理 中创建页面,设置 前台路径(
route_path或默认/{slug})、发布、内容模式。 - HTML:
content为 HTML 字符串,前台用v-html渲染(仅信任后台内容)。 - 积木(builder):后台使用 可视化编辑器(添加模块、按住左侧手柄拖拽调整顺序、配置动画);链接可在弹窗中选择 站内页面、可下载文件 或 自定义地址。亦可展开「高级」直接改 JSON。
- 存储仍为 JSON,结构如下,前台按模块渲染并支持入场动画。
动态路由
- 前台启动时请求
GET /api/web/routes,按已发布页面注册 Vue Router。 slug为index的页面不参与动态路由(仍由首页Home.vue+ 首页数据驱动)。- 单页数据:
GET /api/web/page?path=/your-path(site_id可选,默认官网站点)。
积木 JSON 结构
{
"version": 1,
"blocks": [
{
"id": "唯一可选",
"type": "heading",
"props": { "text": "标题", "level": 2 },
"animation": { "enter": "fadeIn", "delay_ms": 0, "duration_ms": 600 }
}
]
}
模块类型 type
| type | props 说明 |
|---|---|
heading |
text, level (1–6) |
text |
text 纯文本;或 html: true 时用 html / text 作为 HTML |
link_list |
items: [{ label, url, target? }] |
button |
text, url, variant: primary | ghost, target? |
html |
html 原始 HTML 片段 |
spacer |
height 像素 |
divider |
无 |
section |
padding, maxWidth, background;children 为子 blocks 数组 |
动画 animation.enter
none|fadeIn|slideUp|slideLeft|zoomIndelay_ms、duration_ms控制延迟与时长(毫秒)
扩展新模块
- 在
web/src/components/blocks/BlockRenderer.vue增加type分支与样式。 - 后台仍通过 JSON 配置
props,无需改库表结构。
首页编辑(导航 / 下载 / 平台链接)
- 管理后台 → 首页编辑与下载:导航链接、下载按钮链接、各平台链接均可点 「选择链接」,与积木编辑器共用
LinkPickerDialog。 - 本站页面:来自当前站点「网页管理」中的页面路径(含首页
/)。 - 其他站点首页:同账号下其他站点;需在 站点管理 中填写 域名,系统会生成
https://域名/形式的外链。 - 可下载文件:与积木一致,填入
/api/web/sites/{siteId}/assets/{id}/download。 - 试跳:保存前可在后台用 「试跳」 新标签页预览;以
/开头的路径会按当前浏览器域名拼接(与前台实际域名不一致时请以真实站点为准)。