我正在尝试将分类法添加到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")));

当我运行此代码时,分类法显示在"部分"而不是"领域"在内容定义中。我可以手动将其添加到字段,它工作正常。 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")));
当我运行此迁移时,请进入该部件的内容定义。专家未列在"字段"在内容定义中。它列在"部件"下面。您无法进入分类标准设置。这就是发生的事情
此外,内容编辑屏幕没有列出分类。所以我不能将专家部分附加到分类标准上。
答案 0 :(得分:0)
你这样做:
ContentDefinitionManager.AlterPartDefinition("ExpertPart", ...
所以你说:将字段添加到ExpertPart。在仪表板中手动将字段添加到'字段'在内容类型的一部分中,Orchard将其添加到具有相同内容类型名称的部分(使用内容类型隐式创建)。 注意:这部分并不存在,但是当加载类型时,果园会动态创建它。
因此,假设您的自定义内容类型被称为“专家”,Orchard会将信息中心中的字段添加到名为“专家”的部分。
因此,要让您的字段显示在字段下而不是在某个部分下,您的迁移应如下所示:
// 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"));