是否有关于如何构建基于多对多关系的 Kentico CMS 门户实施的最佳实践(即销售食品并有大部分食谱的网站 - 每个产品都用于许多食谱,每个食谱都可以使用网站上出售的许多产品)?
Kentico 只是错误的工具来执行此操作,还是 Kentico 内部有解决方案来处理这种关系?
是否有关于如何构建基于多对多关系的 Kentico CMS 门户实施的最佳实践(即销售食品并有大部分食谱的网站 - 每个产品都用于许多食谱,每个食谱都可以使用网站上出售的许多产品)?
Kentico 只是错误的工具来执行此操作,还是 Kentico 内部有解决方案来处理这种关系?
我会考虑内置的相关文档系统。在文档的属性选项卡下,有一个用于相关文档的部分。此处描述了该功能:
如果这是您网站的一项重要功能,您可能可以将该部分作为另一个选项卡添加到现有的页面、设计、表单、属性选项卡中,以便于访问。您只需要修改Site Manager -> Development的Modules区域。另一个提醒:它们在技术上是单向关系,但您可以将查询构造为双向:
SELECT *
FROM CMS_Document d
JOIN CMS_Relationship r
ON (d.DocumentID = r.LeftNodeID
OR d.DocumentID = r.RightNodeID)
Where DocumentID = 100
上面的代码将 CMS_Document 表连接到 CMS_Relationship 表,为您提供 ID 为 100 的 Document 的所有相关文档。
如果您在数据库中达到顶峰,Related Documents 的表结构非常简单:
因此,正如 McBeev 所建议的,我将为产品和食谱创建自定义文档类型。然后,您可以按照我上面概述的方式链接它们。祝你好运!
开箱即用它不能很好地支持多对多,但是您应该能够通过一些自定义开发来做到这一点。创建 2 个自定义文档类型,例如食谱和产品,然后创建自定义表单控件来管理关系。然后将表单控件放置在页面上,以便在节点的表单选项卡上管理字段。表单控件(如果您想从两种类型进行管理,则为 2 个)将是多对多类型控件,例如复选框列表或多选。然后在保存时,您将使用 API 或 SQL 代码保存到连接表而不是文档本身(或子文档类型)。您可能需要手动创建连接表。
http://www.kentico.com/docs/devguide/index.html?developing_form_controls.htm
使用自定义表格并编写您自己的自定义 Web 部件将帮助您实现这些目标。
您还可以为您的产品和食谱创建自定义文档类型,然后使用内置的链接到现有文档功能。
不过,我确实同意 dvanbale,您也可以使用自定义表格来完成此操作。
它确实取决于你想要做什么。
我遇到过几次这种情况,并使用 sql 函数和 sql 中继器为内容树的父子层次结构提出了一种快速解决方法。它绝不是一个健壮的实现。如果那是您的迫切需要,我会同意自定义表格可能是要走的路。
实际上,我只是发布了我所做工作的详细版本。当我搜索它是否被索引时,我发现了这个。你可以在这里看到它:
可以使用 kentico CMS 直接执行此操作,而无需编写任何自定义代码或查询。
幸运的是,我写了一篇关于它的文章并成功实现了它,它为内容管理员提供了足够的灵活性来管理关系数据,而无需开发人员。