可视化构建器

构建器

可视化构建器

Qi 可视化构建器(瓜奇构建器)是一套嵌入 WordPress 原生编辑器的拖拽式页面搭建工具。左侧挑选组件、中间实时排版、右侧改内容与样式,所见即所得,无需写任何代码即可拼出完整页面。

1. 简介与核心特性

可视化构建器在页面 / 文章编辑页提供一个名为「可视化页面构建器」的编辑框。它把 53+ 种区块(组件)以「单一 Schema → 渲染引擎 → 画布」的方式组织:你在画布里拖出来的页面,会以一份 JSON 结构保存到文章数据中,前台再按同一套样式 1:1 还原,保证后台预览与线上展示完全一致

  • 拖拽排版:从左侧组件库拖到画布,或点击直接追加到末尾。
  • 三栏界面:组件库 / 画布 / 配置面板,每屏看到整体又方便精修。
  • 所见即所得:后台预览与前端复用同一套 CSS class,改完即所见。
  • 内联编辑:画布里双击标题 / 正文,原地修改文字。
  • 嵌套布局:区块包裹、分栏容器可逐层放入子组件,做复杂版式。
  • 导入 / 导出:整页以 JSON 形式导出备份、跨站点迁移或复用。
  • 响应式预览:一键切换桌面 / 平板 / 手机宽度查看效果。
  • 安全存储:保存时对 Schema 做白名单校验与 XSS 净化,防止注入。

2. 打开构建器

在后台编辑任意页面(Page)时,构建器会出现在编辑区下方:

  1. 后台进入 页面 → 全部页面,新建或编辑一个页面。
  2. 在编辑器下方找到名为 「可视化页面构建器」 的编辑框(位于正文编辑器之下)。
  3. 画布空着也没关系 —— 点击左侧组件即可开始添加;首次进入会载入示例区块帮助熟悉操作(可在开发者接口中关闭)。
适用范围:默认仅在 page 文章类型启用。如需在自定义文章类型上启用,见文末「进阶:开发者接口」中的 hualin_builder_post_types 过滤器。
不要混用:同一页面建议只用构建器「或」经典编辑器正文其一。若已用构建器编辑,文章正文(the_content)会被构建器内容替代;清空构建器后自动回退到正文。

3. 界面布局:三栏 + 顶栏

构建器三栏界面:左「组件库」· 中「画布」· 右「配置面板」,顶部为操作工具条截图占位,替换为你的实际操作截图

顶栏(操作工具条)

  • 撤销 / 重做:回退或恢复上一步操作(含快捷键)。
  • 桌面 / 平板 / 手机:切换画布预览宽度,验证响应式表现。
  • 导入 / 导出 JSON:整页结构的备份与迁移。
  • 清空:一键清除画布上所有区块(有二次确认)。
  • 预览:新窗口打开纯页面预览,脱离后台框架看真实效果。

左侧 · 组件库(Palette)

按分类列出全部可用区块。拖拽到画布任意位置即可插入;单击则追加到画布末尾。每个组件显示名称与分类标签。

中间 · 画布(Canvas)

页面最终样式的实时预览。每个区块带悬浮工具条与标签;点击选中后在右侧编辑;空白处可接收拖入的新组件并出现插入指示线。

右侧 · 配置面板(Config)

选中区块后,这里列出该区块所有可配置字段(文字、选项、可重复列表等)。修改即时反映到画布。容器类区块(区块包裹 / 分栏容器)还会在此显示嵌套内容管理器。

4. 添加区块

方式一:拖拽(推荐,可精确定位)

  1. 在左侧组件库按住目标组件。
  2. 拖到中间画布,画布会出现一条蓝色插入线表示落点。
  3. 松手即在该位置插入新区块。

方式二:单击追加

直接单击左侧组件,区块会添加到画布末尾并自动选中,便于马上配置。

提示:新加入的区块会高亮选中,右侧面板自动打开其配置项;先定内容、再调样式,效率最高。

5. 编辑区块内容

右侧配置面板

点击画布中的区块使其选中,右侧面板按字段类型提供对应控件:

  • 单行文本(text):标题、按钮文字、链接等。
  • 多行文本(textarea):副标题、正文、提示内容等,支持简单 HTML(富文本区块)。
  • 数字(number):间距高度、百分比等数值。
  • 下拉选择(select):样式变体、列数、对齐、色调等预设选项。
  • 色板(color):如首屏 Hero 的背景风格,点选深蓝 / 浅蓝 / 品牌橙。
  • 可重复列表(repeater):服务项、案例、团队成员等一组数据的增删(见第 7 节)。

画布内联编辑(双击改字)

画布中带下划虚线可编辑的文字(标题、副标题、引言等)支持双击原地修改:双击进入编辑、改完点击别处(失焦)即保存。适合快速改文案,不必往返右侧面板。

输入不丢失焦点:在右侧输入时,画布只重绘当前区块、不会整页刷新,光标与输入状态都保留,连续录入很顺手。

6. 区块工具条:隐藏 / 移动 / 复制 / 删除

鼠标移到画布中的区块上,左上角会出现一排小工具按钮(也出现在嵌套子块的悬浮条上):

按钮作用说明
👁 显示 / 隐藏切换区块可见性隐藏后前端不输出,但保留在 Schema 中可随时恢复;并非删除。
↑ 上移与上一个区块交换顺序逐格上移,调整排版先后。
↓ 下移与下一个区块交换顺序逐格下移。
⧉ 复制克隆当前区块复制一份插到其后,含全部内容与新唯一 ID,便于做相似模块。
✕ 删除移除区块彻底移除(撤销可恢复)。

右侧配置面板顶部同样提供「显示 / 隐藏」「删除组件」按钮,与画布工具条一致。

7. 可重复字段(列表类数据)

服务、案例、团队、价格套餐、问答等内容通常是「一组多条」的数据,构建器用可重复字段(repeater)管理。以「服务网格」为例:

  • 右侧面板中该字段显示为若干「#1 / #2 …」条目卡片,每张卡是单行 / 多行子字段。
  • 点条目右上角「删除」移除某条;改子字段文字即时反映到画布。
  • 点「+ 添加一项」在末尾新增一条(默认空,按结构填即可)。
  • 条目顺序即展示顺序,可在嵌套管理器中用 ↑ / ↓ 调整(见下节)。
逗号分隔的快捷字段:部分区块(如「关于图文」的资质标签、「数据表格」的表头 / 单元格)用逗号分隔一行文本来批量录入,注意按字段提示的格式填写。

8. 嵌套布局:区块包裹 / 分栏容器

要拼复杂版式(如「带统一背景的卡片区」「左右两栏各放不同内容」),用两个容器类区块

区块包裹(Section,布局类)

  • 相当于一个带背景与内边距的「容器」,内部可放任意子组件。
  • 字段:眉标 / 标题 / 副标题、背景(浅色 / 灰底 / 深蓝 / 品牌橙)、内边距(小 / 中 / 大)。
  • 在右侧「嵌套内容」区点「+ 添加组件」选择子组件(标题块、富文本、图标信息块、按钮块等),或用 ↑ / ↓ / 复制 / 删除管理。

分栏容器(Columns,布局类)

  • 把页面分成 2 / 3 / 4 列,列间距可选小 / 中 / 大。
  • 每一列是独立容器,可各自放入子组件;支持「+ 添加一列 / − 删除最后一列」(最多 4 列)。
  • 移动端各列自动堆叠为单列,无需手动处理。
可放入容器的子组件:标题块、富文本、按钮块、按钮组、图片块、图标信息块、图文布局块、提示框、图标清单、进度条组、数据强调块、标签组、社交图标组、折叠面板、评分星级、图片、图标特性、提示框、图标清单、通用卡片、联系号召、数据指标、公告通知等(即 INNER_TYPES 集合)。

9. 响应式预览

顶栏的「桌面 / 平板 / 手机」按钮可即时切换画布宽度:

  • 桌面:默认满宽,对应 PC 大屏。
  • 平板:中等宽度,验证平板 / 小笔记本表现。
  • 手机:窄屏,确认单列堆叠、文字与按钮在移动端可读可点。
建议流程:每搭完一屏,切到手机宽度扫一眼,避免上线后才发现移动端错位。

10. 撤销 / 重做与快捷键

构建器内置操作历史(最多保留 60 步),可随时回退或恢复:

快捷键作用
Ctrl / Cmd + Z撤销上一步
Ctrl / Cmd + Shift + Z重做(恢复撤销)
Ctrl / Cmd + Y重做
Delete(选中区块且未在输入框时)删除当前选中区块

顶栏的撤销 / 重做按钮也会随可用状态自动启用或置灰。

11. 导入 / 导出 JSON

整页结构以一份 JSON({ "blocks": [ ... ] })表示,可备份、迁移或复用:

导出

  1. 点顶栏「导出 JSON」,弹窗显示当前页面的完整 Schema。
  2. 全选复制保存(如存为 home.json),即可作为整页备份或模板。

导入

  1. 点顶栏「导入」,在弹窗粘贴合法 JSON。
  2. 点「应用」:若格式正确(含 blocks 数组)即整体替换当前画布;失败会提示「格式不正确 / 解析失败」。
导入会覆盖:导入将整体替换当前画布所有区块,导入前建议先导出备份,或在撤销可用时操作。

12. 清空画布

点顶栏「清空」会弹出二次确认,确认后移除画布上全部区块。清空后仍可用「撤销」恢复;发布保存后该页面构建器内容即清空,前台回退到文章正文(若有)。

13. 保存与发布

构建器内容跟随 WordPress 正常的「保存草稿 / 发布 / 更新」流程:

  • 编辑过程中的每次改动会写入隐藏字段 _hualin_builder_schema(同时本地缓存一份,刷新不丢)。
  • 点击编辑器右上角「更新 / 发布」时,隐藏字段随文章一起入库,无需额外按钮
  • 保存前对 Schema 做白名单校验与净化:非法 JSON 会被忽略,区块类型不在白名单内会被丢弃,文本经 sanitize_text_field、富文本经 wp_kses_post 处理,避免存储型 XSS。
  • 若隐藏字段为空,则删除已有 Schema,页面回退到普通正文。
建议:大改动前先「导出 JSON」留底;发布前切到手机宽度预览一遍,确认无误再点更新。

14. 前端渲染与默认内容

前台通过 hualin_render_builder() 读取文章 meta 中的 Schema 并渲染;后台预览与前端共用同一套 builder-blocks.css,所以「所见即所得」。

  • 被隐藏的区块(工具条 / 面板里的「隐藏」)在前端不输出,但仍留在 Schema 中可随时恢复。
  • 未用构建器编辑的页面:主题内置各页面的「开箱即用」默认 Schema(首页、关于、服务、案例、团队、资讯、FAQ、招贤纳士、合作伙伴、隐私、网站地图等),用户不编辑也能直接上线精品内容。
  • 默认内容与构建器内容二选一:一旦用构建器保存,即优先使用你的 Schema。
数据安全:构建器只读写文章自己的 meta(_hualin_builder_schema),不会触碰你的媒体库、其他文章数据或站点配置,可放心使用。

15. 区块参考总览(53+ 种)

以下按组件库分类列出全部区块。类型标识为开发者接口 / JSON 中使用,普通用户只需在左侧组件库按名称挑选。

页首(Page Header)

名称类型主要可配置项
首屏 Herohero主标题、副标题、主/次按钮文字、背景风格(深蓝/浅蓝/品牌橙)
首屏幻灯片hero-slider样式(经典居中/左文右图/卡片框/极简)、高度、可增删幻灯片(眉标/标题/副标题/按钮)

内容(Content)

名称类型主要可配置项
关于图文about眉标、标题、正文、资质标签(逗号分隔)、样式(图文左右/分栏/图文+资质墙)
服务网格services标题、副描述、列数、样式(卡片网格/列表行/图标强调)、服务项列表
案例网格projects标题、副描述、列数、样式(卡片网格/列表行/首条大图)、案例项(标题/建设单位)
数据优势advantages标题、指标项(数值/标题/描述)
资讯列表news标题、列数、样式(卡片网格/列表行/首条大图)、资讯项(日期/标题)
发展历程timeline标题、副描述、节点项(年份/标题/描述)
服务流程process标题、副描述、步骤项(序号/标题/描述)
专家团队team标题、副描述、样式(头像卡/描边卡/紧凑横排)、成员项(姓名/职务/简介)
客户评价testimonials标题、评价项(评语/姓名单位/身份)
合作单位clients标题、副描述、单位项(名称)
常见问题faq标题、问答项(问题/答案,可折叠)
选项卡tabs标题、选项卡项(标签/内容,纯 CSS 切换)
图片画廊gallery标题、列数、图片项(说明)
图标特性features标题、副描述、特性项(图标 emoji/标题/描述)

媒体(Media)

名称类型主要可配置项
视频模块video标题、占位说明、视频链接(可选,留空显示占位)

转化(Conversion)

名称类型主要可配置项
联系号召cta标题、副标题、按钮文字、样式(渐变横幅/居中卡片/左对齐极简)
联系我们contact标题、地址、电话、邮箱、工作时间

基础(Basic)

名称类型主要可配置项
富文本richtext内容(支持简单 HTML 与短代码)
图片横幅image占位说明
间距spacer高度(px)
提示框callout标题、内容、色调(信息/成功/警告)
分隔线divider样式(直线/圆点)、上下间距(px)
大引言quote引言、署名
面包屑breadcrumb层级项(名称/链接)

企业(Enterprise)

名称类型主要可配置项
数据指标counter标题、副描述、指标项(数值/后缀/说明)
服务套餐pricing标题、套餐项(名称/价格/单位/主推/特性每行一项)
资质荣誉awards标题、荣誉项(名称/颁发机构/年份)
数据表格table标题、表头(逗号分隔)、行(单元格逗号分隔)
图标清单list标题、条目项(图标/内容)
图文英雄hero-split主标题、副标题、按钮文字、配图说明、图文左右反转
图文特性feature-split标题、特性行项(标题/描述/配图/反转)
公告通知notice标题、内容、色调、链接(可选)
地图位置map标题、地址、电话、地图嵌入链接(可选 http)
合作伙伴partners标题、样式(Logo 墙/卡片网格/滚动跑马灯/横向滚动)、伙伴项(名称/类别)
通用卡片card标题、卡片项(图标/标题/描述/链接)

布局(Layout · 容器类)

名称类型主要可配置项
区块包裹section眉标/标题/副标题、背景、内边距;内部可嵌套子组件
分栏容器columns列数(2/3/4)、列间距;每列可嵌套子组件

自定义(Custom · 原子 / 可复用组件)

名称类型主要可配置项
标题块heading眉标、标题、副标题、标题级别(H2/H3/H4)、对齐
按钮块button文字、链接、样式、尺寸、对齐、箭头、新窗口
按钮组buttons对齐、按钮项(文字/链接/样式)
图片块imagebox图片地址、alt、图注、比例、圆角、宽度、对齐、点击链接
图标信息块iconbox图标(emoji/字符/图标库图片地址)、标题、描述、布局、对齐、图标底色
图文布局块mediatext图片位置、图片地址、眉标、标题、正文、按钮
提示框alertbox类型(信息/成功/警告/危险)、图标、标题、内容
图标清单iconlist标记样式(勾选/箭头/圆点/数字)、列数、条目项(文字)
进度条组progress进度条颜色、进度项(名称/百分比)
数据强调块stat数值、后缀、标签、补充说明、对齐、数字颜色
标签组taglist样式(浅底/实心/描边)、对齐、标签项(文字)
社交图标组socials尺寸、形状、对齐、图标项(图标字符/名称/链接)
折叠面板accordion默认展开第一项、面板项(标题/内容)
评分星级rating星级(1-5)、标题、说明、对齐

16. 进阶:开发者接口

Schema 结构

整页即一份 JSON。每个区块含 id(唯一)、type(类型标识)、props(配置项);可选 hidden: true 表示隐藏。容器类额外嵌套:

{
  "blocks": [
    { "id": "b1a2c3", "type": "hero",
      "props": { "title": "…", "subtitle": "…", "btn1": "查看案例", "btn2": "了解企业", "bg": "navy" } },
    { "id": "b9", "type": "section",
      "props": { "bg": "gray", "pad": "md",
        "inner": [ { "id": "s1", "type": "card", "props": { … } } ] } },
    { "id": "b10", "type": "columns",
      "props": { "cols": 2, "gap": "md",
        "cells": [ { "head": "左列", "blocks": [ … ] }, { "head": "右列", "blocks": [ … ] } ] } }
  ]
}

在自定义文章类型上启用

默认仅 page。用过滤器扩展:

add_filter( 'hualin_builder_post_types', function ( $types ) {
    $types[] = 'product';   // 例:在产品文章类型启用
    return $types;
} );

关闭首次进入的示例数据

后台编辑新建页面时默认载入示例区块。用前端全局变量关闭:

window.HUALIN_BUILDER_NOSEED = true;   // 保持空白画布

区块类型白名单与净化

保存时仅允许白名单内类型(与 builder-core.js 的 BLOCKS 注册表 1:1),并对 props 递归净化:文本走 sanitize_text_field、富文本(richtext.html)走 wp_kses_post、嵌套结构(section.inner / columns.cells)单独保留层级,杜绝注入。

暴露的全局对象

构建器在浏览器暴露 window.HualinBuilder,含 BLOCKS 注册表与 getSchema() / setSchema() 方法,便于二次开发或外部脚本读写当前页面结构。

17. 常见问题

  • 构建器内容没生效? 确认已点「更新 / 发布」;若页面同时有正文,构建器内容会优先覆盖正文展示。
  • 隐藏的区块去哪了? 没被删除,只是前端不输出;选中后点工具条的「显示 / 隐藏」即可恢复。
  • 导入后页面变了? 导入会整体替换画布,导入前请先「导出 JSON」备份。
  • 移动端错位? 用顶栏「手机」预览宽度检查;分栏容器与多数区块在窄屏会自动堆叠为单列。
  • 不想让客户看到示例区块? 在集成时设置 window.HUALIN_BUILDER_NOSEED = true,新建页面即为空白画布。
  • 能放进容器里的组件有限制吗? 是的,仅 INNER_TYPES 集合内的原子 / 自定义组件可嵌套进区块包裹 / 分栏容器(见第 8 节提示)。
数据安全承诺:构建器只读写当前文章的 meta,不清理、不覆盖你的片源 / 媒体 / 其他文章与站点配置;导入演示数据也仅新增、不破坏既有内容。