2016-05-03 2 views
0

Я пытаюсь добавить таксономию к пользовательскому типу в садовом cms.Orchard CMS 1.10 добавление Таксономия с миграцией в пользовательской части

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"))); 

Когда я запустил эту миграцию, перейдите к определению содержимого детали. Эксперт не указан в разделе «поля» в определении содержимого. Он был указан в разделе «Запчасти». Вы не можете перейти к настройкам таксономии. Это то, что происходит

Orchard Problems

Кроме того, экран редактировать содержание не таксономия в списке. Поэтому я не могу приложить экспертную часть к таксономии.

+0

У вас есть опечатка в коде: '.OfType («TaxononmyField»)' – Lawyerson

+0

Спасибо за это! Все это было проблемой. – Jeff

ответ

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")); 
+0

Спасибо за помощь. Я добавил некоторые дополнительные сведения к моему первому сообщению. – Jeff