2016-09-19 11 views
0

マイグレーションによって新しいコンテンツタイプを作成し、彼のコンテンツフィールドに追加しましたが、ダッシュボードには表示されません。ダッシュボードのOrchardCMS - プログラムでカスタムコンテンツタイプにコンテンツフィールドを追加しません。

コンテンツタイプビュー:

enter image description here

私のコードの何が問題?

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

あなたのタイプに 'ProductViaCodePart'を追加するのを忘れてしまったようです。 – Xceno

答えて

2

@ Xcenoによると、コンテンツタイプにパートを追加していません。しかし、これを行うことで 'Fields'セクションの下に表示されるのではなく、 'ProductViaCode'の下の 'Parts'セクションの下に表示されます。これは、あなたが '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)); 
+0

ありがとう!それは私のために働く:) – Ievgen

関連する問題