结论先给:只要同一份内容需要被两个以上栏目同时引用,就应该把它拆成独立内容单元,让栏目只保存引用关系,而不是各自保存一份正文。嘉定网站设计项目里,这个判断的关键前提是栏目是否真的需要独立维护标题、摘要或排序;如果各栏目的展示规则完全一致,保留多份副本反而更省事,单一来源带来的抽象成本就不值得付。
把栏目分成两类,处理方式完全不同。引用关系指一个内容单元被多个栏目调用,例如一篇政策解读同时出现在“政策速递”和“企业服务”两个列表里,两个列表展示的是同一份正文。并列关系指两个栏目虽然主题相近,但各自需要独立的标题措辞、摘要角度和排序权重,例如同一场活动在“新闻中心”和“招商动态”里被写成两种口径。
只有引用关系才适合做单一来源。判断方法很直接:两个栏目里如果有一个改了标题,另一个是否也必须同步改。答案是“必须”,说明它们共享同一份数据;答案是“可以不一样”,说明它们本来就是两份内容,强行合并只会让编辑每次发布都要绕过系统限制。
常见错误是把唯一副本放在某一个“主栏目”里,其他栏目通过复制或同步去取。这样做的隐患是主栏目一旦被删除、改版或调整层级,引用它的栏目就会集体失效。更稳的做法是让正文只存在于一个独立的内容单元中,栏目只记录“这个单元出现在我的哪个位置、以什么顺序出现”。
这样拆分后,修改正文只需要动一处,栏目层面的排序和数量调整互不影响。代价是编辑后台会多出一层“先建内容、再挂栏目”的操作,如果团队每天只发一两条且从不跨栏目,这层操作就是纯负担。
假设某嘉定网站设计项目里,“产品中心”和“解决方案”两个栏目都展示同一批设备。表面上这是典型的引用关系,但实际运营中,解决方案栏目需要按行业场景重写标题、替换配图,并且排序逻辑与产品中心完全不同。此时如果强行做成单一来源,编辑每次发布都要在展示层写条件判断,维护成本反而高于各存一份。
反例的边界很清楚:当同一内容在不同栏目需要不同的标题、摘要、配图或排序依据,且这些差异是长期稳定的,就不是单一来源问题,而是两份内容。此时正确的动作是承认它们是两份数据,只把公共部分(如参数表、附件)抽出来单独维护,而不是追求整篇唯一。
不要一次性重构所有栏目。先选一组跨两个栏目出现的内容,统计它在过去一个月里被修改过几次、每次修改是否两个栏目都改了。如果修改总是成对发生,就把它改成引用模式;如果修改经常只发生在其中一个栏目,就保留两份。
这个动作的结果会直接决定下一步:成对修改的比例高,说明单一来源能减少重复劳动,可以逐步推广到同类内容;比例低,说明差异是真实需求,应该转而梳理哪些字段可以共享、哪些必须分开。无论哪种结果,都比先建一套统一模型再发现不适用要省事。
改成引用模式后,日常维护的重点从“改正文”变成“查引用”。一个内容单元被下线时,要能知道它还被哪些栏目引用;一个栏目改版时,要能知道它引用了哪些单元。这两个方向的信息如果只能靠人工记忆,单一来源就会在几个月后变成一堆失效链接。
可行的做法是在内容单元上记录引用它的栏目列表,并在栏目调整时触发一次检查。检查不需要复杂,只要能回答“这个单元还有没有活着的引用”就够了。回答不了,就说明当前的维护方式还没有真正支持单一来源,应该先补上这层信息再继续扩展。