如何允许Django站点的副本编辑器以DRY方式创建内部链接



我的Django网站是一个电子商务商店。相对非技术性的副本编辑器将登录Django管理界面,并为每个产品页面编写副本。他们告诉我,他们希望能够在这个副本中创建链接到网站上的其他页面。例如,如果一个产品在描述中引用了另一个产品,他们希望在页面之间进行链接。

我看到了几个可能的选择:

  1. 他们只是对副本中<a>标记中的URL进行硬编码。我已经为管理文本区域设置了ckeditor,所以这将是最简单的解决方案,但如果网站的url结构发生了变化(比如我们为了SEO目的而更改了它们),所有的链接都会断开。

  2. 引入某种wiki语法,将他们希望链接位于方括号中的文本括起来。类似于:

    Widget A与[[Widget B]]配合使用非常好。这很好。

将产生:

Widget A works really well with <a href="/detail/widget-b/">Widget B</a>.  It is good.

那么你有一个问题,如果产品名称发生变化会发生什么?

有没有人以前处理过这个问题,并提出了一个足够灵活的解决方案,允许更改链接/名称等?

我经常处理这个问题。最终,你必须非常有说服力才能说服我允许将链接直接嵌入副本中,尤其是在电子商务网站上。

  • 如果产品名称更改或被重新命名怎么办
  • 如果产品停产了怎么办。。。您不希望内部链接出现404个错误
  • 你真的想把的人从你的"添加到购物车"呼叫中引导出来
  • 他们知道你的SEO策略吗?他们会淡化你的联系吗?他们会用什么措辞?他们会确保链接有效吗

当我被要求让复制/产品开发团队能够添加链接时,我总是以"否"开头。询问他们需要它们做什么,解释可能出现的问题(例如,维护有效链接的额外成本、转换率考虑因素、SEO考虑因素),并提供替代解决方案。

例如,我通常可以让他们将产品与"关联产品"、"相关产品"、《配件》、"更多信息"等产品关联起来。你可以在产品页面底部的选项卡或列表中找到这些信息。这些将在模型中,因此您可以控制不显示停产产品,链接名称是产品名称(您可以控制SEO)等。确定它们是否用于交叉销售、追加销售或向最终用户提供更多信息。

作为最后的手段,我还使用了一个自定义代码解析器,它同样基于目标对象,而不是硬编码的链接。例如,假设你赋予他们这样的能力:

Widget A works really well with [product=123].

模型/视图中的自定义模板标记、解析器可以将其替换为指向基于get_absolute_url()的id为123的Product(或使用slug)的链接。如果产品停产,名称仍然可以显示,但没有链接。只有当您有从不删除记录的策略时,这才有效。即便如此,当他们输入了无效的产品ID或有人删除了该产品时,您可能需要进行一些错误处理。发生。

最新更新