10

是否有关于如何构建基于多对多关系的 Kentico CMS 门户实施的最佳实践(即销售食品并有大部分食谱的网站 - 每个产品都用于许多食谱,每个食谱都可以使用网站上出售的许多产品)?

Kentico 只是错误的工具来执行此操作,还是 Kentico 内部有解决方案来处理这种关系?

4

6 回答 6

7

我会考虑内置的相关文档系统。在文档的属性选项卡下,有一个用于相关文档的部分。此处描述了该功能:

文档属性,相关文档

如果这是您网站的一项重要功能,您可能可以将该部分作为另一个选项卡添加到现有的页面、设计、表单、属性选项卡中,以便于访问。您只需要修改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 所建议的,我将为产品和食谱创建自定义文档类型。然后,您可以按照我上面概述的方式链接它们。祝你好运!

于 2011-03-10T14:34:23.217 回答
2

开箱即用它不能很好地支持多对多,但是您应该能够通过一些自定义开发来做到这一点。创建 2 个自定义文档类型,例如食谱和产品,然后创建自定义表单控件来管理关系。然后将表单控件放置在页面上,以便在节点的表单选项卡上管理字段。表单控件(如果您想从两种类型进行管理,则为 2 个)将是多对多类型控件,例如复选框列表或多选。然后在保存时,您将使用 API 或 SQL 代码保存到连接表而不是文档本身(或子文档类型)。您可能需要手动创建连接表。

http://www.kentico.com/docs/devguide/index.html?developing_form_controls.htm

于 2011-08-02T07:26:21.693 回答
0

使用自定义表格并编写您自己的自定义 Web 部件将帮助您实现这些目标。

于 2011-03-08T22:40:03.680 回答
0

您还可以为您的产品和食谱创建自定义文档类型,然后使用内置的链接到现有文档功能。

不过,我确实同意 dvanbale,您也可以使用自定义表格来完成此操作。

它确实取决于你想要做什么。

于 2011-03-09T13:26:45.870 回答
0

我遇到过几次这种情况,并使用 sql 函数和 sql 中继器为内容树的父子层次结构提出了一种快速解决方法。它绝不是一个健壮的实现。如果那是您的迫切需要,我会同意自定义表格可能是要走的路。

实际上,我只是发布了我所做工作的详细版本。当我搜索它是否被索引时,我发现了这个。你可以在这里看到它:

http://www.kenticosolutions.com/Developer-Tips/Tip/May-2011/Many-to-Many-relationships-in-the-Kentico-CMS-Cont.aspx

于 2011-05-20T22:24:47.060 回答
0

可以使用 kentico CMS 直接执行此操作,而无需编写任何自定义代码或查询。

幸运的是,我写了一篇关于它的文章并成功实现了它,它为内容管理员提供了足够的灵活性来管理关系数据,而无需开发人员。

通过转发器的相关内容

于 2017-01-27T12:34:14.360 回答