nopCommerce - Динамическая активация темы для разных страниц - Не мульти магазин
Мне было интересно, как мы можем динамически активировать различные темы на разных страницах. Например, несколько страниц будут иметь тему-1, а остальная часть сайта будет иметь тему-2. Пользователи не будут выбирать темы. Это должно быть установлено динамически от серверной части.
Одним из способов является создание отдельных главных страниц.
Но возможно ли, что у нас есть две темы nopCommerce, и мы динамически активируем одну из них на разных страницах одного и того же магазина? Не мульти магазин.
1 ответ
Решение
Это должно быть возможно после следующих шагов:
- Создайте новый плагин.
- Скопируйте текущий класс
ThemeContext
, осуществляяIThemeContext
к вашему плагину. Используйте другое имя, чтобы избежать ошибок ( см.). - Зарегистрируйте новый класс в Autofac. Установите более высокий приоритет, чтобы новый класс заменял старый
ThemeContext
, Включите плагин и проверьте его работу, установив там точку останова. - Изменить
get
часть имуществаWorkingThemeName
в вашем новом классе и реализуйте все необходимые бизнес-правила, возвращая альтернативное имя темы, когда это необходимо. Вам может понадобиться доступ к текущемуRouteData
получить текущий контроллер маршрута или параметры для каждого http-запроса.
Это все. Это проще, чем кажется.