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));
Другие вопросы по тегам