Orchard CMS 1.10 在自定义部分中添加带有迁移的分类法

Orchard CMS 1.10 adding Taxonomy with migration in a custom part

我正在尝试将分类法添加到 Orchard cms 中的自定义类型。

ContentDefinitionManager.AlterPartDefinition("ExpertPart", 
                     b => b
                    .WithField("ExpertOf", fld => fld            
                                                .OfType("TaxononmyField")
                                                .WithDisplayName("Expert Of")
                                                .WithSetting("TaxonomyFieldSettings.Taxonomy", "ExpertOf")
                                                .WithSetting("TaxonomyFieldSettings.LeavesOnly", "false")
                                                .WithSetting("TaxonomyFieldSettings.SingleChoice", "true")
                                                .WithSetting("TaxonomyFieldSettings.Required", "true")));

当我 运行 此代码时,分类法显示在内容定义中的 "parts" 而不是 "fields" 下。我可以手动将其添加到字段中,并且效果很好。允许您以编程方式将分类字段添加到自定义内容类型的 Orchard 1.10 的新迁移代码是什么?

感谢您对此的帮助!所以我试过了。

ContentDefinitionManager.AlterTypeDefinition("Expert",
                                b => b.WithPart("ExpertPart"));

ContentDefinitionManager.AlterPartDefinition("ExpertPart",
                     b => b
                    .WithField("ExpertOf", fld => fld
                        .OfType("TaxononmyField")
                        .WithDisplayName("ExpertOf")
                        .WithSetting("TaxonomyFieldSettings.Taxonomy", "ExpertOf")
                        .WithSetting("TaxonomyFieldSettings.LeavesOnly", "false")
                        .WithSetting("TaxonomyFieldSettings.SingleChoice", "true")
                        .WithSetting("TaxonomyFieldSettings.Required", "true")));

当我运行这个迁移的时候,再进入这个部分的内容定义。的专家未在内容定义中的 "fields" 下列出。它列在 "Parts" 下。您无法进入分类设置。这是发生了什么

Orchard Problems

此外,内容编辑屏幕没有列出分类法。所以我无法将专家部分附加到分类法中。

你这样做:

ContentDefinitionManager.AlterPartDefinition("ExpertPart", ...

所以你说:将字段添加到 ExpertPart。当您在仪表板中手动将字段添加到内容类型的 'Fields' 部分时,Orchard 会将其添加到与内容类型具有相同名称的部分(这是使用内容类型隐式创建的)。 注意:这部分实际上并不存在,但 orchard 在加载类型时会即时创建它。

因此,假设您的自定义内容类型称为 'Expert',Orchard 将仪表板中的字段添加到名为 'Expert' 的部分。

因此,要让您的字段显示在字段下而不是部分下,您的迁移应该如下所示:

// Orchard can only handle these migrations if you explicitly add the
// Expert part to the Expert content type
ContentDefinitionManager.AlterTypeDefinition("Expert", type => type
    .WithPart("Expert"));

// Add the field to the part
ContentDefinitionManager.AlterPartDefinition("Expert", part => part
    .WithField("ExpertOf", fld => fld
        .OfType("TaxononmyField"));