Zbuduj moduł inicjujący Episerver CMS 9 do sortowania niestandardowych kart modelu

Po pierwsze, chcę podkreślić zasługi kodu tutaj dla Per Magne Skuseth, pracownika Episerver i częstego współpracownika EpiserverWorld. Pierwotnie opublikował kod do sortowania niestandardowych kart w ten post EpiserverWorld. Chciałem pójść o krok dalej i pokazać kod, który można zawinąć w niestandardowy moduł inicjujący Episerver. Dopiero niedawno zacząłem bawić się EPiServer 9 i jeśli się zastanawiałeś, zbudowanie niestandardowego modułu inicjalizacji nie zmieniło się od poprzednich wersji.

Tak więc założenie to polega na konieczności sortowania kart budowania treści w niestandardowych typach stron i blokach. Lubię budować interfejs zaplecza do tworzenia treści w sposób łatwy w użyciu i prosty do zrozumienia. Osiąga się to zazwyczaj poprzez hamowanie sekcji bloku lub strony na zakładkach. Jedną z rzeczy, które próbuję zrobić ze wszystkimi artykułami, które publikuję, jest pokrótce omówienie konfiguracji projektu Visual Studio. Korzystam z Visual Studio 2015 i zainstalowałem najnowszą wersję EPiServer CMS 9 (wersja: 9.3.1 od chwili opublikowania tego posta) za pośrednictwem rozszerzenia EPiServer Visual Studio. W folderze Business, który jest instalowany domyślnie, tworzę folder o nazwie Initialization, w którym przechowywane są moje niestandardowe moduły inicjujące. W tym module kliknij folder prawym przyciskiem myszy i utwórz niestandardową klasę C # o nazwie TabSortOrder.

Kod do tworzenia modułu niestandardowego jest całkiem prosty. Wszystko, co musisz zrobić, to dziedziczyć z: IInitializableModule i dodać to do początku deklaracji klasy:

[ModuleDependency (typeof (EPiServer.Web.InitializationModule))]

Wewnątrz prywatnej metody void RegisterTabs znajduje się lista niestandardowych kart i ich kolejność sortowania. Reszta kodu jest dość oczywista.

przy użyciu EPiServer.Core; przy użyciu EPiServer.DataAbstraction; przy użyciu EPiServer.Framework; przy użyciu EPiServer.Framework.Initialization; przy użyciu EPiServer.Security; przy użyciu EPiServer.ServiceLocation; przy użyciu EPiServer.Shell.ObjectEditing; korzystanie z systemu; przy użyciu System.Linq; namespace YourNamespace.Business.Initialization {/// /// Moduł do ustawiania kolejności kart niestandardowego modelu /// [ModuleDependency (typeof (EPiServer.Web.InitializationModule))] public class TabSortOrder: IInitializableModule {public void Initialize (kontekst InitializationEngine ) {RegisterTabs (); if (context.HostType == HostType.WebApplication) {var registry = context.Locate.Advanced.GetInstance (); registry.RegisterMetadataHandler (typeof (ContentData), new SiteMetadataExtender ()); }} private void RegisterTabs () {var tabDefinitionRepository = ServiceLocator.Current.GetInstance <ITabDefinitionRepository> (); this.AddTabToList (tabDefinitionRepository, nowa TabDefinition () {Name = "Hero", RequiredAccess = AccessLevel.Edit, SortIndex = 27}); this.AddTabToList (tabDefinitionRepository, nowa TabDefinition () {Name = "SEO", RequiredAccess = AccessLevel.Edit, SortIndex = 28}); this.AddTabToList (tabDefinitionRepository, nowa TabDefinition () {Name = "Site Settings", RequiredAccess = AccessLevel.Edit, SortIndex = 29}); } private void AddTabToList (ITabDefinitionRepository tabDefinitionRepository, definicja TabDefinition) {TabDefinition existingTab = GetExistingTabDefinition (tabDefinitionRepository, definicja); if (existingTab! = null) {definicja.ID = existingTab.ID; } tabDefinitionRepository.Save (definicja); } prywatna statyczna TabDefinicja GetExistingTabDefinition (ITabDefinitionRepository tabDefinitionRepository,
Definicja TabDefinition) {return tabDefinitionRepository.List () .FirstOrDefault (t => t.Name.Equals (definition.Name, StringComparison.InvariantCultureIgnoreCase)); } public void Uninitialize (kontekst InitializationEngine) {} public void Preload (parametry string []) {}}}

To wszystko. Należy pamiętać, że Episerver zachowuje niestandardowy porządek sortowania na swoich kartach systemowych. Oto rodzaj dla odniesienia:

SystemTabNames.Content = SortIndex 10
SystemTabNames.Scheduling = SortIndex 20
SystemTabNames.Settings = SortIndex 30
SystemTabNames.Shortcut = SortIndex 40
SystemTabNames.Categories = SortIndex 50

Mam nadzieję, że pomoże ci to w sortowaniu niestandardowych kart w Episerver 9. Niedawno zacząłem się rozwijać w Episerver i naprawdę podoba mi się do tej pory. Z całym tym szaleństwem, które dzieje się teraz na świecie, zachęciłbym wszystkich do ciągłego uczenia się i robienia tego, co kochasz. Uwielbiam pisać kod i myśleć o rozwiązywaniu problemów z logiką programowania. Uderz mnie, jeśli masz jakieś pytania lub komentarze. Sprawdź także niektóre z moich publicznych repozytoriów GitHub tutaj .