Створіть модуль ініціалізації Episerver CMS 9 для сортування вкладених моделей
По-перше, я хочу віддати честь цього коду тут на Per Magne Skuseth, співробітника Episerver і частих донорів EpiserverWorld. Спочатку він опублікував код, щоб упорядкувати власні вкладки в цей пост EpiserverWorld. Я хотів би зробити це на крок далі і покажу вам код, щоб перевести його в користувальницький модуль ініціалізації Episerver. Я тільки нещодавно почав возитися з EPiServer 9 і, якщо вам було цікаво, побудова власного модуля ініціалізації не змінився в порівнянні з попередніми версіями.
Отже, передумовою для цього є необхідність сортувати вкладки, що створюють вміст, у спеціальних типах сторінок і блоків. Мені подобається створювати інтерфейс для створення контенту таким чином, щоб його було легко використовувати і легко розуміти. Це зазвичай досягається шляхом гальмування розділів блоку або сторінки на вкладки. Одна річ, яку я намагаюся зробити з усіма статтями, які я публікую - це коротко розповісти про налаштування проекту Visual Studio. Я використовую Visual Studio 2015, і я встановив останню версію EPiServer CMS 9 (версія: 9.3.1 за станом цього часу) через розширення Visual Studio Visual Studio. Всередині папки "Бізнес", яка встановлюється за замовчуванням, я створюю папку з ініціалізацією, щоб зберігати власні модулі ініціалізації. Для цього модуля просто клацніть правою кнопкою миші на папці і створіть власний клас C #, який називається TabSortOrder.
Код для створення власного модуля досить простий. Все, що вам потрібно зробити, - успадкувати від: IInitializableModule і додати його до початку оголошення класу:
[ModuleDependency (typeof (EPiServer.Web.InitializationModule)]]Всередині приватного методу void RegisterTabs - це список користувацьких вкладок та їх порядок сортування. Решта коду досить зрозуміла.
за допомогою EPiServer.Core; з використанням EPiServer.DataAbstraction; за допомогою EPiServer.Framework; за допомогою EPiServer.Framework.Initialization; за допомогою EPiServer.Security; за допомогою EPiServer.ServiceLocation; за допомогою EPiServer.Shell.ObjectEditing; використання системи; за допомогою System.Linq; namespace YourNamespace.Business. ) {RegisterTabs (); if (context.HostType == HostType.WebApplication) {var registry = context.Locate.Advanced.GetInstance (); registry.RegisterMetadataHandler (typeof (ContentData), новий SiteMetadataExtender ()); }} приватні void RegisterTabs () {var tabDefinitionRepository = ServiceLocator.Current.GetInstance <ITabDefinitionRepository (); this.AddTabToList (tabDefinitionRepository, нове TabDefinition () {Name = "Hero", RequiredAccess = AccessLevel.Edit, SortIndex = 27}); this.AddTabToList (tabDefinitionRepository, нова TabDefinition () {Ім'я = "SEO", RequiredAccess = AccessLevel.Edit, SortIndex = 28}); this.AddTabToList (tabDefinitionRepository, новий TabDefinition () {Name = "Параметри сайту", RequiredAccess = AccessLevel.Edit, SortIndex = 29}); } private void AddTabToList (ITabDefinitionRepository tabDefinitionRepository, визначення TabDefinition) {TabDefinition existingTab = GetExistingTabDefinition (tabDefinitionRepository, визначення); if (existingTab! = null) {definition.ID = існуючий_таблиця; } tabDefinitionRepository.Save (визначення); } приватний статичний TabDefinition GetExistingTabDefinition (вкладка ITabDefinitionRepository tabDefinitionRepository,Визначення TabDefinition) {return tabDefinitionRepository.List () .FirstOrDefault (t => t.Name.Equals (definition.Name, StringComparison.InvariantCultureIgnoreCase)); } public void Uninitialize (контекст InitializationEngine) {} загальнодоступні недійсності попереднього завантаження (рядкові [] параметри) {}}}
Це все, що є. Зауважте, що Episerver зберігає користувацький порядок сортування на вкладках системи. Ось для вашого довідника:
SystemTabNames.Content = SortIndex 10
SystemTabNames.Scheduling = SortIndex 20
SystemTabNames.Settings = SortIndex 30
SystemTabNames.Shortcut = SortIndex 40
SystemTabNames.Categories = SortIndex 50
Сподіваюся, це допоможе вам отримати з сортування користувальницьких вкладок в Episerver 9. Я недавно почав розвиватися в Episerver і дійсно подобається до цих пір. З усіма сумами, що відбуваються в світі прямо зараз, я заохочую кожного завжди продовжувати вчитися і робити те, що ви любите. Я дуже люблю писати код і роздумувати про проблеми логіки програмування. Натисніть мені, якщо у вас виникнуть питання або коментарі. Крім того, перевірте деякі з моїх публічних репо GitHub тут .