Недавно я получил запрос от редакторов, иногда они забывали проверить URL-адрес браузера и продолжать работать в неправильной среде и публиковать контент в неправильной среде. например, один из редакторов тестировал что-то в подготовительной среде, и что-то произошло между небольшим обновлением рабочей среды, он непреднамеренно обновил вспомогательную среду и подумал, что сделал свою работу. Итак, редакторы спросили, можем ли мы разместить баннер поверх каждой страницы, указывающий на текущую среду. Это может помочь нам свести к минимуму человеческую ошибку, подобную этой?
-
Посмотрим, как я выполню это требование.
Прежде всего, я создал новый класс компонентов в бизнес-папке, подобный этому.
[Component(PlugInAreas = “/episerver/cms/action”,
Categories = “cms”,
WidgetType = “yourCompanyName/environments/environmentHighlighter”)
]
открытый класс EnvironmentHighlighterComponent
{}
В компоненте есть три важные частиPlugInAreas: определяет, где в cms должно отображаться содержимое компонента. существуют различные способы получить значение PlugInAreas для использования
Класс EPiServer.Shell.PlugInArea
Но для моего требования я не нашел никакого значения, которое можно было бы использовать для области глобального меню в EPiServer.Shell.PlugInArea. Итак, я решил проверить, какие предопределенные компоненты доступны в системе. Среди различных предопределенных компонентов панель инструментов была наиболее близкой к моему требованию.
при дальнейшем просмотре определения панели инструментов я обнаружил, что «/episerver/cms/action» PlugInAreas работает для меня. -
-
- Категории: я хотел показать компонент для всех страниц cms, поэтому просто указал «cms» в качестве категории. другим значением может быть «приборная панель».
- WidgetType: это значение относится к различным настройкам ваших ClientResources, например, к редакторам, виджетам и т. д., для нашего случая мы использовали
“yourCompanyName/environments/environmentHighlighter” - yourCompanyName — это имя пространства имен виджета, которое будет использоваться в файле module.config.
- environments — это путь к папке в папке ClientResources.
- environmentHighlighter — это имя файла js, в котором будет написан код Dojo. так
-
Вторая часть — это обновление или создание нового файла module.config в корне сайта и обновление следующим образом.
в приведенном выше файле конфигурации мы пытаемся сопоставить папку виджетов с папкой ClientResources.
Третья часть — создание файла сценария Dojo. в нашем случае имя файла — файл environmentHighlighter.js.
определять([
“dojo/_base/declare”,
“dijit/_WidgetBase”,
“dijit/_TemplatedMixin”
],
функция (объявить, _WidgetBase, _TemplatedMixin)
{
return declare(“yourcomapanyname/environments/environmentHighlighter”,
[
_WidgetBase,
_TemplatedMixin
],
{
templateString: dojo.cache(“/EnvironmentHighlighter/Index”)});
});
в приведенном выше сценарии есть две важные части.
- декларация: значение совпадает со значением WidgetType.
- Оператор templateString сообщает додзе, откуда должен браться html, в нашем случае EnvironmentHighlighter — это контроллер, а Index — это метод.
Четвертая и последняя часть — создание контроллера, просмотр и настройка маршрута, эти части говорят сами за себя.
Контроллер
открытый класс EnvironmentHighlighterController: контроллер
{
публичный индекс ActionResult()
{
вернуть частичное представление();
}
}
Вид:
@{
var currentEnvironment = Environments.CurrentEnvironment;
var greenColor = “#2cd31f”;
вар оранжевый цвет = “# ff6a00”;
var colorScheme = currentEnvironment == Environments.Environment.Production.ToString() ? оранжевый цвет : зеленый цвет;
}
Маршрутизация:
RouteTable.Routes.MapRoute(“EnvironmentHighlighter”, “environmenthighlighter/Index”, новый { контроллер = “EnvironmentHighlighter”, action = “Index” });
Вот и все!
07 августа 2023 г.