orchardcms - 在 Orchard 数据迁移中向内容类型添加字段

标签 orchardcms

我在数据迁移中创建了一个 ContentType,它将多个 ContentPart 焊接在一起。

在 Orchard 站点内容管理中,我可以向 ContentType 添加字段(但不是 ContentPart),而在数据迁移中,似乎只能向 ContentPart 添加字段(而不是 ContentType)。

我想将该字段添加到迁移中的 ContentType,这样我就可以使用placement.info 控制它的位置。

也许这并不重要,还有另一种方法可以实现在迁移中添加字段,然后能够使用placement.info控制它的放置位置以及使用模板控制它的外观。

最佳答案

您实际上无法将字段附加到内容类型。当您将其附加到管理 UI 中的内容类型时,Orchard 在幕后做了一些魔术来向您隐藏这一事实 - 它会在该内容类型内创建一个内容部分,其名称与内容类型相同,然后附加该新内容部分的字段。

您可以通过管理 UI 附加一个字段,然后转到“导入/导出”,并导出内容类型的元数据来验证这一点。

要通过迁移附加字段,请执行相同的操作。如果您没有适合附加字段的内容部分,我使用的约定是创建一个与内容类型同名的内容部分,错误后缀为“Part”。假设您的内容类型是“VideoGame”:

ContentDefinitionManager.AlterPartDefinition(
    "VideoGamePart"
    , b => b
        .Attachable()
        .WithField("ThumbnailImage", cfg => cfg.OfType("MediaPickerField").WithDisplayName("Video game box cover image"))
);
// Type: 
ContentDefinitionManager.AlterTypeDefinition(
    "VideoGame"
    , cfg =>
        cfg
            .WithPart("VideoGamePart")
            .WithPart("IdentityPart")
            .WithPart("TitlePart")
            .WithPart("CommonPart")
            .Creatable()
);

所有字段都附加到部件,而不是类型,因此您自然可以使用此迁移方法通过placement.info 和模板控制放置,就像通过 UI 定义字段一样。

关于orchardcms - 在 Orchard 数据迁移中向内容类型添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14568888/

相关文章:

.net - orchard cms 删除/删除内容项

asp.net - 将 Orchard 与现有 Azure 项目集成

orchardcms - 在自定义内容类型的详细信息和摘要模式下创建两个单独的媒体库选择器替代字段

orchardcms - 覆盖区域渲染

.net - Orchard CMS 模块仪表板中的重复模块条目

http-status-code-404 - HTTP 404 : The/Media directory is not serving images

orchardcms - Orchard CMS 中的基本评论格式

c# - Orchard 。如何渲染 'HeadScripts' 形状之前的东西?

url - Orchard 我可以根据投影仪小部件的 url 或页面 ID 进行查询吗?

c# - 如何使用 Orchard CMS 创建推荐页面?