单一来源不是把所有栏目合并,而是让每一条内容只有一个“主记录”,其他栏目只引用它的标识或摘要。昭通网站制作中常见的矛盾是:给一条政策解读同时挂到“政策动态”“办事指南”“常见问题”三个栏目,初期只改一处就能同步,看起来干净;内容量上来后,编辑从不同栏目入口进入后台,各自复制了一份正文,从此三处开始漂移。要判断该用哪种维护方式,先要弄清漂移是权限问题还是数据模型问题。
第一种解释是流程问题。编辑在某个栏目里直接新建了内容,而不是从已有内容里挂载,于是系统里出现了两条独立记录。这种漂移的特征是:正文措辞、发布时间、附件路径往往有细微差异,改动时间也不同步。
第二种解释是结构问题。内容确实只有一条主记录,但栏目展示层各自缓存了一份渲染结果,或者某个栏目用的是手工填写的摘要字段。此时正文可能一致,标题、摘要、排序却对不上。区分这两种解释,可以抽查同一条内容在两个栏目中的记录 ID 是否相同:ID 相同说明是展示层分叉,ID 不同说明已经产生实体副本。
取一条同时出现在两个以上栏目的内容,只修改主记录的正文中一个不显眼的词,保存后不刷新缓存,再逐个栏目查看。若所有栏目都变了,说明引用链完整;若只有一个栏目变、另一个不变,说明不变的那个持有独立数据。这个动作的结果直接决定下一步:引用链完整时,问题在编辑习惯;出现独立数据时,问题在录入方式或字段设计。
还要看列表页与详情页是否使用同一数据源。列表页若只存标题和链接,通常不会分叉;列表页若存了摘要快照,摘要就会随主记录更新而落后。这一步能帮你把“内容重复”缩小到具体字段,而不是笼统地要求所有人“注意同步”。
样本阶段只有几十条内容、两三个栏目,靠编辑自觉和口头约定就能维持单一来源。规模扩大后会出现三类例外:栏目数量增加,人工记住挂载关系变得不现实;多人协作时,新编辑从栏目入口进入,看不到主记录的存在;历史内容在迁移中被批量导入,导入工具可能为每个栏目各建一条记录。
因此,“单人维护时有效”的做法不能直接照搬到多人多栏目。判断能否沿用,要看三个条件:是否所有栏目都从同一内容库挂载;是否有字段层面的引用约束,而不是靠命名约定;是否有办法在发布前发现同一主记录被重复创建。任一条件不满足,样本期的做法就会退化为事后比对。
如果各栏目对同一内容的标题、摘要、排序要求差异不大,优先采用主记录加引用的方式。具体动作是:只在主内容库新建一次,栏目通过关联字段挂载;栏目需要不同标题时,用单独的展示标题字段覆盖,而不复制正文。这样改一次正文,所有引用位置同步;代价是栏目编辑不能随意改动正文,需要额外的权限划分。
如果某个栏目确实需要独立成稿,例如“常见问题”要把政策原文改写成问答口径,就不应强行引用。此时应明确它是衍生内容,在正文中标注来源主记录的链接或编号,并约定主记录变更时由谁负责复核衍生稿。假设一条主记录一年内修改三次,衍生稿若无人复核,就会出现三处口径不一致;把复核责任写进发布流程,比事后全站搜索替换更可控。
给主记录一个稳定且不随栏目变化的标识,例如内容编号或固定链接别名,并让栏目挂载时引用这个标识。之后新增栏目时,先检查它能否通过标识取到内容,再决定是否允许手工录入。这个动作的影响是:后续排查重复内容时,可以用标识反查所有引用位置,而不是逐栏目翻列表。对于昭通网站制作中栏目会持续增加的站点,这一步比一次性清理重复内容更能减少返工。