جستجو
محصولات
    منو بسته
    2 دی 1403

    جایگزینی ویو در ناپ کامرس 4.20

    5 سال پیش
    #1865
    با سلام.
    من در ناپ کامرس بسیار مبتدی هستم. کاری که قصد انجامش رو دارم نوشتن یک پلاگین برای نسخه ی 4.20 فروشگاه ساز ناپ کامرس هست و جایگزینی اون در ویو. در حال حاضر میخوام Product/_AddToCart رو جایگزین کنم. ویوهای جدید رو به پلاگین استفاده کردم، توابع جدید رو برای اون صفحه نوشتم، اما الان گیج شدم چطور ویوهای اصلی رو با ویوی پلاگینی که نوشتم، جایگزین کنم.
    لطفا کمکم کنید
    نقل قول
    1
    5 سال پیش
    #1870
    بنظرم باید به Presentation\Nop.Web\Views\Product مراجعه کنید و در فایلهای "ProductTemplate.Simple.cshtml" و "ProductTemplate.Grouped.cshtml" به دنبال "@await Html.PartialAsync("_AddToCart", variant.AddToCart, dataDictAddToCart)" بگردید.

    اگر قصد جایگزین کردن ویو رو دارید، اون خطوط رو با ویو خودتون جایگزین کنید.

    اگر در حال ایجاد "ویجت پلاگین" هستید، میتونید کامپوننت خودتون رو به این صورت فراخوانی کنید:

    "@await Component.InvokeAsync("Widget", new { widgetZone = PublicWidgetZones.HomepageTop })"

    کافیه "PublicWidgetZones.HomepageTop" رو با نام  WidgetZone خودتون عوض کنید

    امیدوارم کمکتون کنه
    نقل قول
    0
    5 سال پیش
    #1871
    شما میتونید از IViewLocationExpander برای جایگزینی ویو از طریق پلاگین استفاده کنید. برای منبع میتونید به اینجا مراجعه کنید:


    nopCommerce > Presentation > Nop.Web.Framework > Themes > ThemeableViewLocationExpander.cs

    نقل قول
    0
    5 سال پیش
    #1876
    سلام و عرض ادب
    اگر پلاگینی نوشتید و قصد دارید فایل در پوشه ی ویو جایگزین کنید، لازمه که این کار رو انجام بدید:
    دو فایل رو در پوشه ی اصلی پلاگینتون قرار بدید.
     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)
        {
        }
      }
    }
    نقل قول
    0
    09127857628