结论先说:只有当“栏目”被当作呈现层、而不是内容实体时,单一来源才成立——同一篇内容只存一份,多个栏目通过引用或聚合规则把它取出来展示。如果你们的栏目在后台各自建了一份可独立编辑的副本,那么无论前台设计风格多统一,都会退化成多来源,改一处、漏三处只是时间问题。下面先讲清楚这个结论成立的条件,再给出一个会让它失效的反例,最后是一组可以立刻执行的动作。
单一来源能不能维护,取决于栏目在数据层扮演什么角色。两种常见形态的处理方式完全不同:
判断方法很直接:在后台改一次正文里的某个错别字,看另一个栏目下的同篇内容是否同步变化。同步,说明是分类;不同步,说明是容器。这个动作的结果决定了后续所有维护方式——分类结构下你只需要管归属规则,容器结构下你必须先做一次合并或建立引用机制,否则后面做什么都是补丁。
有一种情况会让“只存一份”变得不成立:某个栏目要求自己的排序权重、自己的列表摘要、甚至自己的标题措辞,而这些字段在内容实体上是唯一的。假设一篇内容在“技术分享”栏目里要显示成偏实操的摘要,在“行业资讯”栏目里要显示成偏趋势的摘要,而摘要字段只有一个,那么强行单一来源就会导致其中一个栏目显示错位的文案。
这时正确的处理不是放弃单一来源,而是把“实体字段”和“栏目呈现字段”分开:正文、主标题、发布时间等属于实体,只存一份;栏目内的排序值、列表摘要、角标文案属于归属关系或呈现层,允许每个栏目各存一份。这样分叉被限制在呈现字段里,不会污染正文。反过来说,如果你们的系统无法在归属关系上附加字段,只能改实体,那就只能接受要么摘要统一、要么内容分叉,二选一,没有第三条路。
假设某站有三个栏目都在用同一篇“产品更新说明”,目前是三条独立记录,标题已经被改得各不相同。迁移可以这样走:
这个动作做完后,再改一次正文错别字,三个栏目应同时更新,而各自的列表摘要保持不变。如果更新后某个栏目摘要也跟着变了,说明模板读错了字段层级,需要回到第 4 步调整,而不是回退到副本方案。
日常运营中,以下信号出现任何一个,都说明单一来源正在被绕过:
这些信号只是线索,不能单独证明处理方式正确或错误。例如标题近似也可能是正常的系列文章命名,正文长度不同也可能是栏目有意做了删减。要确认,仍然回到那个动作:改一次主记录,看有几处跟着变。
如果你已经尝试过统一模板、统一编辑器、统一命名规范,问题仍然存在,遗漏的条件大概率是字段层级没有分清楚。下一步动作是列一张表,把当前所有字段分成“实体级”和“归属级”两类,然后检查后台是否支持在归属关系上存字段。支持,就按上面的迁移路径走;不支持,就先决定哪些栏目可以接受统一摘要,把不能接受的栏目单独隔离出来,而不是让整站回到副本模式。这个决定做完之后,网站设计风格上的统一才有稳定的内容底座,否则前台越一致,后台的分叉越难发现。