Как добавить пользовательский шаблон продукта в плагин nopCommerce

#nopcommerce

Вопрос:

Я создал плагин, но для него нужен индивидуальный шаблон продукта, и я не могу заставить его работать. Может кто-нибудь, пожалуйста, помочь мне понять, что я сделал не так?

До сих пор у меня было:

  1. ушел в https://example.com/Admin/Template/List и добавил новый шаблон продукта 1a. установите путь просмотра «myCustomPlugin.Число просмотров.Продукт.ProductTemplateCustom.Просто»
  2. ушел в https://example.com/Admin/Product/Edit/46 и установите этот продукт с помощью нового шаблона продукта
  3. в своем коде плагина я создал шаблон в: myCustomPluginПредставленияПродуктProductTemplateCustom.Простой.cshtml
  4. загрузил страницу продукта

когда я загружаю страницу продукта, я получаю:

Исключение InvalidOperationException: Исключение InvalidOperationException: Представление ‘ProductTemplateCustom.Простого» не нашлось. Был произведен поиск в следующих местах: /Темы/Очистка по умолчанию/Просмотры/Продукт/ProductTemplateCustom.Простой.cshtml /Темы/Очистка по умолчанию/Просмотры/Общий доступ/ProductTemplateCustom.Простой.cshtml /Представления/Продукт/ProductTemplateCustom.Простой.cshtml /Представления/Общие/ProductTemplateCustom.Простой.cshtml /Страницы/Общие/ProductTemplateCustom.Простой.cshtml

  • Я проверил Nop.WebPluginsmyCustomPluginViewsProduct и ProductTemplateCustom.Simple.cshtml был скопирован заново.
  • Я посмотрел RouteProvider.cs , ожидая, что в мой плагин нужно будет добавить некоторую конфигурацию маршрутизации, но я ничего не вижу
  • В их документации говорится, что мне нужно добавить новый шаблон продукта ViewsProduct , поэтому я сделал это, но он существует в моем пути к плагину, и я не могу понять, как заставить nopCommerce искать в этом месте

Ответ №1:

Похоже, то, что вы ищете, — это IViewLocationExpander. Проще говоря, этот интерфейс позволяет добавлять пользовательские местоположения просмотра, чтобы вы могли переопределить представление по умолчанию в своем плагине.

Вы можете найти реализацию в PresentationNop.Web.FrameworkThemesThemeableViewLocationExpander.cs

Самый простой способ — предоставить полный путь представления. Тем не менее, я предпочитаю использовать ViewLocationExpander, он выглядит более упорядоченным и аккуратным.