OrchardCMS - программно не добавлено поле контента в пользовательский тип контента
Создайте новый тип контента с помощью миграции, добавьте в него контентное поле, но они не отображаются на панели инструментов.
Представление типа контента в Dashboard:
Что не так с моим кодом?
public int UpdateFrom2() {
var name = "ProductViaCode";
ContentDefinitionManager.AlterPartDefinition(
string.Format("{0}Part", name),
b => b
.Attachable()
.WithField("ProductId", cfg => cfg
.OfType("InputField")
.WithDisplayName("Product Id")));
ContentDefinitionManager.AlterTypeDefinition(
name, cfg => cfg
.WithPart(typeof(CommonPart).Name)
.WithPart(typeof(AutoroutePart).Name)
.WithPart(typeof(BodyPart).Name)
.WithPart(typeof(TitlePart).Name)
.WithPart(typeof(MenuPart).Name)
.Creatable()
.Draftable()
.Listable()
.Securable());
return 3;
}
1 ответ
Решение
Как сказал @Xceno, вы не добавили деталь в свой тип контента. Однако при этом он не будет отображаться в разделе "Поля", а под разделом "Детали" в разделе "ProductViaCode". Это потому, что вы добавили "Part".
Чтобы оно появилось в разделе "Поля" типа, вы можете добавить поле к части с тем же именем типа, а затем добавить эту часть к вашему типу:
var name = "ProductViaCode";
ContentDefinitionManager.AlterPartDefinition(
// Without 'Part' postfix
name,
b => b
.Attachable()
.WithField("ProductId", cfg => cfg
.OfType("InputField")
.WithDisplayName("Product Id")));
// Don't forget to add the part to the type
ContentDefinitionManager.AlterTypeDefinition(name, cfg => cfg
.WithPart(name));