Во-первых, я хочу отдать должное за смелость кода здесь Пер Магне Скусет, сотруднику Episerver и частому участнику EpiserverWorld. Первоначально он опубликовал код для сортировки пользовательских вкладок в этот пост EpiserverWorld. Я хотел сделать еще один шаг и показать вам код, чтобы обернуть его в пользовательский модуль инициализации Episerver. Я только недавно начал возиться с EPiServer 9, и, если вам интересно, создание пользовательского модуля инициализации не изменилось по сравнению с предыдущими версиями.
Таким образом, предпосылкой для этого является необходимость сортировки вкладок построения контента по пользовательским страницам и типам блоков. Мне нравится создавать внутренний интерфейс для создания контента таким образом, чтобы он был прост в использовании и понятен. Обычно это достигается путем торможения разделов блока или страницы на вкладках. Одна вещь, которую я пытаюсь сделать со всеми статьями, которые я публикую, это кратко рассказать о настройке проекта Visual Studio. Я использую Visual Studio 2015 и установил последнюю версию EPiServer CMS 9 (версия: 9.3.1 на момент публикации) через расширение EPiServer Visual Studio. Внутри папки Business, которая устанавливается по умолчанию, я создаю папку с именем Initialization для хранения своих пользовательских модулей инициализации. Для этого модуля просто щелкните правой кнопкой мыши на папке и создайте собственный класс C # с именем TabSortOrder.
Код для создания пользовательского модуля довольно прост. Все, что вам нужно сделать, это наследовать от: IInitializableModule и добавить это в начало объявления класса:
[ModuleDependency (TypeOf (EPiServer.Web.InitializationModule))]Внутри закрытого метода void RegisterTabs находится список пользовательских вкладок и порядок их сортировки. Остальная часть кода довольно понятна.
используя EPiServer.Core; используя EPiServer.DataAbstraction; используя EPiServer.Framework; использование EPiServer.Framework.Initialization; используя EPiServer.Security; используя EPiServer.ServiceLocation; using EPiServer.Shell.ObjectEditing; используя Систему; использование System.Linq; namespace YourNamespace.Business.Initialization {/// /// Модуль для установки порядка вкладок пользовательской модели /// [ModuleDependency (typeof (EPiServer.Web.InitializationModule))] открытый класс TabSortOrder: IInitializableModule {public void Initialize (context InitializationEngine) ) {RegisterTabs (); if (context.HostType == HostType.WebApplication) {var registry = context.Locate.Advanced.GetInstance (); registry.RegisterMetadataHandler (typeof (ContentData), новый SiteMetadataExtender ()); }} private void RegisterTabs () {var tabDefinitionRepository = ServiceLocator.Current.GetInstance <ITabDefinitionRepository> (); this.AddTabToList (tabDefinitionRepository, new TabDefinition () {Name = "Hero", RequiredAccess = AccessLevel.Edit, SortIndex = 27}); this.AddTabToList (tabDefinitionRepository, new TabDefinition () {Name = "SEO", RequiredAccess = AccessLevel.Edit, SortIndex = 28}); this.AddTabToList (tabDefinitionRepository, new TabDefinition () {Name = "Настройки сайта", RequiredAccess = AccessLevel.Edit, SortIndex = 29}); } private void AddTabToList (ITabDefinitionRepository tabDefinitionRepository, определение TabDefinition) {TabDefinition существующиеTab = GetExistingTabDefinition (tabDefinitionRepository, определение); if (существующий Tab! = ноль) {определение. ID = существующий Tab.ID; } tabDefinitionRepository.Save (определение); } приватная статическая TabDefinition GetExistingTabDefinition (ITabDefinitionRepository tabDefinitionRepository,Определение TabDefinition) {return tabDefinitionRepository.List () .FirstOrDefault (t => t.Name.Equals (definition.Name, StringComparison.InvariantCultureIgnoreCase)); } public void Uninitialize (контекст InitializationEngine) {} public void Preload (строка [] параметры) {}}}
Это все, что нужно сделать. Следует иметь в виду, что 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. Вот ,