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" 下。您无法进入分类设置。这是发生了什么
此外,内容编辑屏幕没有列出分类法。所以我无法将专家部分附加到分类法中。
你这样做:
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"));
我正在尝试将分类法添加到 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" 下。您无法进入分类设置。这是发生了什么
此外,内容编辑屏幕没有列出分类法。所以我无法将专家部分附加到分类法中。
你这样做:
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"));