سلام و عرض ادب
اگر پلاگینی نوشتید و قصد دارید فایل در پوشه ی ویو جایگزین کنید، لازمه که این کار رو انجام بدید:
دو فایل رو در پوشه ی اصلی پلاگینتون قرار بدید.
Infrastructure / HomepageCategoriesViewEngine.cs
Infrastructure / NopStartup.cs
--------------NopStartup.cs-------------
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc.Razor;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Nop.Core.Infrastructure;
namespace Nop.Plugin.Components.HomepageCategories.Infrasctructure
{
/// <summary>
/// Represents object for the configuring services on application startup
/// </summary>
public class NopStartup : INopStartup
{
/// <summary>
/// Add and configure any of the middleware
/// </summary>
/// <param name="services">Collection of service descriptors</param>
/// <param name="configuration">Configuration of the application</param>
public void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationExpanders.Add(new HomepageCategoriesViewEngine());
});
}
/// <summary>
/// Configure the using of added middleware
/// </summary>
/// <param name="application">Builder for configuring an application's request pipeline</param>
public void Configure(IApplicationBuilder application)
{
}
/// <summary>
/// Gets order of this startup configuration implementation
/// </summary>
public int Order => int.MaxValue;
}
}
-----------HomepageCategoriesViewEngine.cs-----------
using Microsoft.AspNetCore.Mvc.Razor;
using System.Collections.Generic;
using System.Linq;
namespace Nop.Plugin.Components.HomepageCategories.Infrasctructure
{
public class HomepageCategoriesViewEngine : IViewLocationExpander
{
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
{
if (context.AreaName == null && context.ViewName == "Components/HomepageCategories/Default")
{
viewLocations = new[] { "/Plugins/Components.HomepageCategories/Views/PublicInfo.cshtml" }.Concat(viewLocations);
}
return viewLocations;
}
public void PopulateValues(ViewLocationExpanderContext context)
{
}
}
}