首页 / 开发文档 / 整站模板包(仿站)

整站模板包(仿站)

把一个站的栏目、内容、图片打包搬到另一个站:怎么导、怎么不重复、怎么撤销。

它解决什么问题

  • 自己调好一套站,给客户批量开站 —— 客户拿到的是"已经填好内容的站",不是空壳;
  • 换服务器时只搬内容与结构,账号、授权、订单留在原地;
  • 做一个演示站当样板,客户看完说"就照这样来",一键拷过去。

入口:后台 外观 → 整站模板。导出与导入是两个权限点(sitepack.export / sitepack.import),默认只给超级管理员。

包里有什么

manifest.json        清单:名称、版本、源站、包含项、各项计数
data/*.json          各表数据:栏目、内容、导航、轮播、链接、片段、表单、内容模型、站点设置
files/uploads/...    内容与轮播引用到的图片
theme/...            源主题自己的那部分模板文件(可选)

导出时可以勾选:连内容一起(不勾则只导结构)、带图片、带主题文件。

包里没有(也永远不会有)什么

  • 用户与密码、会员数据
  • 授权码、订单、应用商店数据
  • SMTP / 支付宝 / 第三方登录等任何密钥
  • 本站域名(那是每个站自己的身份)

换句话说:这个包可以放心交给别人。配置项走的是一份白名单, 名单外的一律不带;而且在白名单之上还有一道"看着像凭据的键名一律拦掉"的兜底。

导入的两种方式

方式行为
追加(推荐)保留现有数据。同名栏目/片段/表单/模型会复用(不会变出两份); 同一栏目下的同名内容会跳过(重复导入不会翻倍)
覆盖先清空栏目、内容、导航、轮播、链接、片段、表单、内容模型,再导入。 导入前会自动给数据库留一份快照,但撤销也救不回被清掉的内容

拿不准就先点「先干跑」:只算不写,告诉你将新建多少、跳过多少、有哪些警告。

id 是怎么处理的

包里记的是源站的 id,导入时会全部重新映射:

源站栏目 id=3  →  新站建档后得到 id=11
源站内容 cid=3 →  导入后自动挂到 id=11 上
图集、副栏目、标签关系、内容关联 → 一并跟着改

所以两个站原有的数据不会撞车。内容的访问量不会带过来(那是每个站自己的数据), 作者会归到本次操作人名下(源站的那位作者在这边根本不存在)。

撤销

每次导入都会记下"这次新建了哪些行",在页面的「导入记录」页签里可以一键撤销: 按 id 精确删回去,站点设置还原成导入前的值,没人再引用的导入图片也一起收走。 覆盖模式无法撤销(旧数据已经被清空),它的数据库快照在 storage/backup/ 下, 真要回退就用那份快照。

安全边界

  • 含 .. 之类越界路径的包,整包拒绝(解压前逐条校验)
  • 图片只允许落到 wwwroot/uploads/ 下 —— 包里写了别的路径,那一项会被跳过
  • 主题只能落到 templates/<包标识>/(主题的唯一根目录), 不会覆盖官方主题,也不会自动启用
  • 导入全程在一个事务里:中途失败整体回滚,不会留半套数据
导进来的内容默认是"已发布"状态(跟源站一致)。如果不想让它们立即可见, 导入后在「内容管理」里筛一批改状态即可。
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。