如何在没有CommonPart的内容项目中显示内容列表?

时间:2016-10-31 11:57:27

标签: orchardcms orchardcms-1.9

我创建了一个附加UserPart的自定义类型。

根据this issue on GitHub,您无法向也有CommonPart的内容添加UserPart,因为它会导致StackOverflowException,但我仍然会喜欢我的自定义类型显示在内容列表中。我已经将CreatedUtc和PublishedUtc存储在自定义PartRecord中,我可以在某个地方手动插入吗?

编辑:为了澄清,我的具体情况是我正在建立一个面向公众的Orchard网站,该网站基于到目前为止在私人应用中使用的现有数据。我有一个带有用户帐户的遗留表,需要映射到Orchard用户,但它们也代表访问者应该能够浏览的旅行社,并且Orchard管理员应该能够轻松地通过仪表板进行编辑和创建。我有了创建一个带有来自Sipke's webshop tutorial

的UserPart的TravelAgency类型的想法

1 个答案:

答案 0 :(得分:1)

内容类型不需要在内容列表中显示CommonPart。如果我通过在迁移中触发Creatable()来正确记住它的完成情况。 此外,如果您有UserPart,您可以加载Lazy或只通过外键引用它。

为什么您希望这样的内容成为内容列表的一部分?我通常将特定于业务的内容类型隐藏在一个很好的部分中,因此更容易为用户可视化和使用。

肯定有一个错误,但是当他们发表评论时,您可以扩展分类法来完成您的任务,并记住有时候更改Orchard Codebase可能适合您的目的,您只需要在下次升级时跟踪您的更改。我已经做了几次适合我的项目。

如果我没记错的话,它已经有一段时间..如果您查看创建内容列表的核心代码,它会查找Creatable()类型。在代码中挖掘更多内容,查询负责人很可能会加入CommonPart,因此你的问题就出现了。您可以轻松地在控制器中添加另一个查询,并添加您之后的任何内容。但问题是,重构其余操作以适应您的类型。更容易隔离您的新类型。不得不为你看一下,看看这个宝贝:Orchard.Core.Contents.Controllers.AdminController