nopCommerce - Динамическая активация темы для разных страниц - Не мульти магазин

Мне было интересно, как мы можем динамически активировать различные темы на разных страницах. Например, несколько страниц будут иметь тему-1, а остальная часть сайта будет иметь тему-2. Пользователи не будут выбирать темы. Это должно быть установлено динамически от серверной части.

Одним из способов является создание отдельных главных страниц.

Но возможно ли, что у нас есть две темы nopCommerce, и мы динамически активируем одну из них на разных страницах одного и того же магазина? Не мульти магазин.

1 ответ

Решение

Это должно быть возможно после следующих шагов:

  1. Создайте новый плагин.
  2. Скопируйте текущий класс ThemeContext, осуществляя IThemeContext к вашему плагину. Используйте другое имя, чтобы избежать ошибок ( см.).
  3. Зарегистрируйте новый класс в Autofac. Установите более высокий приоритет, чтобы новый класс заменял старый ThemeContext, Включите плагин и проверьте его работу, установив там точку останова.
  4. Изменить get часть имущества WorkingThemeName в вашем новом классе и реализуйте все необходимые бизнес-правила, возвращая альтернативное имя темы, когда это необходимо. Вам может понадобиться доступ к текущему RouteData получить текущий контроллер маршрута или параметры для каждого http-запроса.

Это все. Это проще, чем кажется.

Другие вопросы по тегам