需要在使用插件添加到购物车按钮 nopcommerce 之前显示文本

问题描述 投票:0回答:1

我需要构建一个小部件插件,这样我需要知道如何渲染视图以放置 每个产品“添加到购物车”按钮之前的文字。

我的插件(小部件)将在添加到购物车按钮之前显示文本

我使用的是4.70版本

plugins nopcommerce
1个回答
0
投票

要在每个“添加到购物车”按钮之前添加文本,您需要在插件中创建组件。

请按照以下步骤操作:

  1. 你必须需要在你的插件中继承

    IWidgetPlugin

      public class YourPlugin : BasePlugin, IWidgetPlugin
    
  2. 继承IWidgetPlugin的所有方法(可以参考NivoSlider插件),更新plugin.cs中的

    GetWidgetZonesAsync
    方法

    public Task<IList<string>> GetWidgetZonesAsync()
    {
        return Task.FromResult<IList<string>>(new List<string> { PublicWidgetZones.ProductDetailsAddInfo });
    }
    
  3. 现在更新plugin.cs中的

    GetWidgetViewComponent
    方法

    public Type GetWidgetViewComponent(string widgetZone)
    {
        if(widgetZone == PublicWidgetZones.ProductDetailsAddInfo)
        {
            return typeof(ProductDetailsAddInfoViewComponent);
        }
        else
        {
            return null;
        }
    }
    
  4. 现在您必须在插件文件夹中创建组件文件夹并添加组件类

    ProductDetailsAddInfoViewComponent.cs

    namespace Nop.Plugin.Widgets.YourPlugin.Components 
    {
        public class ProductDetailsAddInfoViewComponent : NopViewComponent
        {
            private readonly IStoreContext _storeContext;
            private readonly ISettingService _settingService;
    
            public ProductDetailsAddInfoViewComponent(IStoreContext storeContext,
                ISettingService settingService)
            {
                _storeContext = storeContext;
                _settingService = settingService;
            }
    
            /// <returns>A task that represents the asynchronous operation</returns>
            public async Task<IViewComponentResult> InvokeAsync(string widgetZone, object additionalData)
            {
                var store = await _storeContext.GetCurrentStoreAsync();
                var settings = await _settingService.LoadSettingAsync<YourPluginSettings>(store.Id);
    
                if (settings.Enable)
                {
                    if (additionalData is not ProductDetailsModel.AddToCartModel model)
                        return Content(string.Empty);
    
                    // Prepare your custom model here
    
                    return View("~/Plugins/Widgets.YourPlugin/Views/Shared/Component/ProductDetailsAddInfo/Default.cshtml");
                }
                else
                    return Content(string.Empty);
            }
        }
    }
    
  5. 现在在下面创建一个 Default.cshtml 视图

    Widgets.YourPlugin/Views/Shared/Component/ProductDetailsAddInfo
    文件夹结构

  6. 在您的视图文件中添加以下文本

     <h3>Your custom text</h3>
    
  7. 保存并重建您的插件。

© www.soinside.com 2019 - 2024. All rights reserved.