结论先行:只有当每个栏目都能接受“引用同一份内容、只保留一份正文”时,单一来源才成立;一旦某个栏目需要独立标题、独立排序或独立权限,它就不再适合同一份来源,而应改为派生副本并明确同步责任。很多站点卡住,不是因为没做去重,而是漏掉了“栏目定位是否允许共享”这个条件。
把栏目按用途分成两类,比直接合并更稳。第一类是聚合型栏目,比如按标签、按时间、按作者生成的列表,它们只负责展示入口,正文仍指向同一地址。第二类是业务型栏目,比如“产品文档”和“帮助中心”,即使讲的是同一件事,也常需要不同措辞、不同截图和不同更新节奏。前者适合单一来源,后者适合各自维护。
一个可操作的判断方法是:问这个栏目是否允许用户只看到摘要并跳转到别处。如果允许,它就可以只保存引用关系;如果不允许,它就必须拥有可独立编辑的正文。这个动作会直接影响下一步:确定哪些栏目进入共享清单,哪些栏目排除在外。
常见的失败做法是:在A栏目发布正文,再复制到B栏目,然后靠人工记住“以A为准”。这种做法的隐患不是重复,而是更新时只改了一处。更稳的做法是让B栏目只保存一个指向A的标识,例如用统一的content_id关联,而不是把标题和正文再存一遍。
假设一个内部知识站有“新员工指南”和“流程手册”两个栏目,同一份报销说明同时出现在两边。如果采用引用关系,修改报销比例时只需改一次;如果采用复制,两处就可能出现不同版本。这里的数字只用于说明比较方法,不代表任何真实站点的统计结果。
反例很具体:当某个栏目需要独立设置可见范围时,共享来源就会失效。比如同一篇内容在公开栏目对所有人可见,在内部栏目只对特定角色可见。此时如果强行共用一份正文,权限设置会互相干扰,要么公开了不该公开的内容,要么内部人员看不到。遇到这种情况,正确做法不是继续追求单一来源,而是拆成两份,并在命名或备注中写清哪份是公开版、哪份是内部版。
另一个反例是排序和置顶需求不同。聚合栏目往往需要按发布时间排序,而业务栏目可能需要按操作步骤排序。如果共用一份正文,排序字段也会被一起共享,导致其中一个栏目无法按预期展示。这说明单一来源适合“内容本身一致”的场景,不适合“展示规则必须不同”的场景。
确定共享清单后,下一步是约定唯一更新入口。可以按下面的顺序执行:
这个动作的结果是:共享清单会逐渐缩小到真正适合共享的内容,而不是一开始就追求全站统一。清单缩小后,后续的权限分配和更新检查也会更简单。
如果同一内容在不同栏目中的读者、语气、权限或排序规则存在明显差异,放弃单一来源比强行统一更省事。此时应改为“主版本加派生版本”:主版本负责事实更新,派生版本负责适配具体栏目,并在派生版本中注明来源和最后同步时间。这样既保留了更新线索,又不会让某个栏目被迫接受不适合它的展示方式。
下一步动作很明确:先列出当前重复出现的栏目组合,逐条判断是否允许只显示摘要并跳转。允许的进入共享清单,不允许的标记为派生版本。完成这一步后,再决定哪些内容需要设置唯一更新入口。