در حال بارگزاری ...

دریافت اطلاعات لیست مقایسه

2 سال قبل
#1082 نقل و قول
سلام و عرض خسته نباشید
من یک سری محصول ویژه در صفحه اصلی فروشگاه اینترنتیم دارم. وقتی یک مشتری اونها رو به لیست مقایسه اضافه میکنه، اون کالا رنگ دکمه رو تغییر میده.
حالا من دنبال تابعی میگردم که بتونم اطلاعات لیست مقایسه رو بگیرم و ببینم کالایی که مشتری الان داره مشاهده میکنه، توی لیست مقایسه هست یا نه. اگر هست، رنگ دکمه متفاوت باشه.
آیا کسی میتونه کمکم کنه؟
1
2 سال قبل
#1083 نقل و قول
من از ناپ کامرس 4.00 استفاده میکنم
0
2 سال قبل
#1084 نقل و قول
با سلام
با این راه حل، وقتی یک محصول به لیست مقایسه افزوده شود، سیستم کلاس CSS با نام in-compare-list"" را به ریشه ی تگ جزئیات محصول/نمایش جعبه ای محصول می افزاید. بنابراین شما میتوانید استایل هر یک از عناصر زیرمجموعه را تغییر دهید.

یک پوشه با نام Features در پروژه ی Nop.Web ایجاد کنید.
در پوشه ی Features دو کلاس جدید با نام های CustomProductModelFactory و DependencyRegistrar ایجاد نمایید و کدهای زیر را در آن ها قرار دهید:

برای ناپ کامرس  4.00
CustomProductModelFactory.cs


using Nop.Core;
  using Nop.Core.Caching;
  using Nop.Core.Domain.Catalog;
  using Nop.Core.Domain.Customers;
  using Nop.Core.Domain.Media;
  using Nop.Core.Domain.Orders;
  using Nop.Core.Domain.Seo;
  using Nop.Core.Domain.Vendors;
  using Nop.Services.Catalog;
  using Nop.Services.Directory;
  using Nop.Services.Helpers;
  using Nop.Services.Localization;
  using Nop.Services.Media;
  using Nop.Services.Security;
  using Nop.Services.Shipping.Date;
  using Nop.Services.Stores;
  using Nop.Services.Tax;
  using Nop.Services.Vendors;
  using Nop.Web.Factories;
  using Nop.Web.Framework.Mvc.Models;
  using Nop.Web.Framework.Security.Captcha;
  using Nop.Web.Models.Catalog;
  using System.Collections.Generic;
  using System.Linq;
  

  namespace Nop.Web.Features
  {
      public class CustomProductModelFactory : ProductModelFactory
      {
          private readonly IAclService _aclService;
          private readonly ICompareProductsService _compareProductsService;
          private readonly IStoreMappingService _storeMappingService;
  

          public CustomProductModelFactory(
              ISpecificationAttributeService specificationAttributeService, ICategoryService categoryService, IManufacturerService manufacturerService,
              IProductService productService, IVendorService vendorService, IProductTemplateService productTemplateService,
              IProductAttributeService productAttributeService, IWorkContext workContext, IStoreContext storeContext,
              ITaxService taxService, ICurrencyService currencyService, IPictureService pictureService,
              ILocalizationService localizationService, IMeasureService measureService, IPriceCalculationService priceCalculationService,
              IPriceFormatter priceFormatter, IWebHelper webHelper, IDateTimeHelper dateTimeHelper,
              IProductTagService productTagService, IAclService aclService, IStoreMappingService storeMappingService,
              IPermissionService permissionService, IDownloadService downloadService, IProductAttributeParser productAttributeParser,
              IDateRangeService dateRangeService, MediaSettings mediaSettings, CatalogSettings catalogSettings,
              VendorSettings vendorSettings, CustomerSettings customerSettings, CaptchaSettings captchaSettings,
              OrderSettings orderSettings, SeoSettings seoSettings, IStaticCacheManager cacheManager,
              ICompareProductsService compareProductsService)
              : base(specificationAttributeService, categoryService, manufacturerService,
                    productService, vendorService, productTemplateService,
                    productAttributeService, workContext, storeContext,
                    taxService, currencyService, pictureService,
                    localizationService, measureService, priceCalculationService,
                    priceFormatter, webHelper, dateTimeHelper,
                    productTagService, aclService, storeMappingService,
                    permissionService, downloadService, productAttributeParser,
                    dateRangeService, mediaSettings, catalogSettings,
                    vendorSettings, customerSettings, captchaSettings,
                    orderSettings, seoSettings, cacheManager)
          {
              _aclService = aclService;
              _compareProductsService = compareProductsService;
              _storeMappingService = storeMappingService;
          }
2
اگر پاسخ سوالی برای شما مفید بود، به آن رای مثبت دهید تا به دیگران در پیدا کردن پاسخ مناسب کمک کنید
*******************************************************************************************
Be Who You Always Wanted To Be
2 سال قبل
#1085 نقل و قول

          public override ProductDetailsModel PrepareProductDetailsModel(Product product,
              ShoppingCartItem updatecartitem = null, bool isAssociatedProduct = false)
          {
              var model = base.PrepareProductDetailsModel(product, updatecartitem, isAssociatedProduct);
  

              AddProductMetaData(model.Id, model);
  

              return model;
          }
  

          public override IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(IEnumerable<Product> products,
              bool preparePriceModel = true, bool preparePictureModel = true, int? productThumbPictureSize = null,
              bool prepareSpecificationAttributes = false, bool forceRedirectionAfterAddingToCart = false)
          {
              var models = base.PrepareProductOverviewModels(products,
                  preparePriceModel, preparePictureModel, productThumbPictureSize,
                  prepareSpecificationAttributes, forceRedirectionAfterAddingToCart);
  

              foreach (var model in models)
              {
                  AddProductMetaData(model.Id, model);
              }
  

              return models;
          }
  

          private void AddProductMetaData(int productId, BaseNopModel model)
          {
              var products = _compareProductsService.GetComparedProducts()
                      .Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p))
                      .Where(p => p.IsAvailable())
                      .ToList();
  

              model.CustomProperties["InCompareList"] = products.Any(p => p.Id == productId)
                  ? "in-compare-list" : string.Empty;
          }
      }
  }


DependencyRegistrar.cs


using Autofac;
  using Nop.Core.Configuration;
  using Nop.Core.Infrastructure;
  using Nop.Core.Infrastructure.DependencyManagement;
  using Nop.Web.Factories;
  

  namespace Nop.Web.Features
  {
      public class DependencyRegistrar : IDependencyRegistrar
      {
          public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
          {
              builder.RegisterType<CustomProductModelFactory>().As<IProductModelFactory>().InstancePerLifetimeScope();
          }
  

          public int Order { get { return 100; } }
      }
  }
2
اگر پاسخ سوالی برای شما مفید بود، به آن رای مثبت دهید تا به دیگران در پیدا کردن پاسخ مناسب کمک کنید
*******************************************************************************************
Be Who You Always Wanted To Be
2 سال قبل
#1086 نقل و قول
برای ناپ کامرس  3.90:

CustomProductModelFactory.cs


using Nop.Core;
  using Nop.Core.Caching;
  using Nop.Core.Domain.Catalog;
  using Nop.Core.Domain.Customers;
  using Nop.Core.Domain.Media;
  using Nop.Core.Domain.Orders;
  using Nop.Core.Domain.Seo;
  using Nop.Core.Domain.Vendors;
  using Nop.Services.Catalog;
  using Nop.Services.Directory;
  using Nop.Services.Helpers;
  using Nop.Services.Localization;
  using Nop.Services.Media;
  using Nop.Services.Security;
  using Nop.Services.Shipping.Date;
  using Nop.Services.Stores;
  using Nop.Services.Tax;
  using Nop.Services.Vendors;
  using Nop.Web.Factories;
  using Nop.Web.Framework.Mvc;
  using Nop.Web.Framework.Security.Captcha;
  using Nop.Web.Models.Catalog;
  using System.Collections.Generic;
  using System.Linq;
  

  namespace Nop.Web.Features
  {
      public class CustomProductModelFactory : ProductModelFactory
      {
          private readonly IAclService _aclService;
          private readonly ICompareProductsService _compareProductsService;
          private readonly IStoreMappingService _storeMappingService;
  

          public CustomProductModelFactory(
              ISpecificationAttributeService specificationAttributeService, ICategoryService categoryService, IManufacturerService manufacturerService,
              IProductService productService, IVendorService vendorService, IProductTemplateService productTemplateService,
              IProductAttributeService productAttributeService, IWorkContext workContext, IStoreContext storeContext,
              ITaxService taxService, ICurrencyService currencyService, IPictureService pictureService,
              ILocalizationService localizationService, IMeasureService measureService, IPriceCalculationService priceCalculationService,
              IPriceFormatter priceFormatter, IWebHelper webHelper, IDateTimeHelper dateTimeHelper,
              IProductTagService productTagService, IAclService aclService, IStoreMappingService storeMappingService,
              IPermissionService permissionService, IDownloadService downloadService, IProductAttributeParser productAttributeParser,
              IDateRangeService dateRangeService, MediaSettings mediaSettings, CatalogSettings catalogSettings,
              VendorSettings vendorSettings, CustomerSettings customerSettings, CaptchaSettings captchaSettings,
              SeoSettings seoSettings, ICacheManager cacheManager, ICompareProductsService compareProductsService)
              : base(specificationAttributeService, categoryService, manufacturerService,
                    productService, vendorService, productTemplateService,
                    productAttributeService, workContext, storeContext,
                    taxService, currencyService, pictureService,
                    localizationService, measureService, priceCalculationService,
                    priceFormatter, webHelper, dateTimeHelper,
                    productTagService, aclService, storeMappingService,
                    permissionService, downloadService, productAttributeParser,
                    dateRangeService, mediaSettings, catalogSettings,
                    vendorSettings, customerSettings, captchaSettings,
                    seoSettings, cacheManager)
          {
              _aclService = aclService;
              _compareProductsService = compareProductsService;
              _storeMappingService = storeMappingService;
          }
  

          public override ProductDetailsModel PrepareProductDetailsModel(Product product,
              ShoppingCartItem updatecartitem = null, bool isAssociatedProduct = false)
          {
              var model = base.PrepareProductDetailsModel(product, updatecartitem, isAssociatedProduct);
  

              AddProductMetaData(model.Id, model);
  

              return model;
          }
2
اگر پاسخ سوالی برای شما مفید بود، به آن رای مثبت دهید تا به دیگران در پیدا کردن پاسخ مناسب کمک کنید
*******************************************************************************************
Be Who You Always Wanted To Be
2 سال قبل
#1087 نقل و قول

        public override IEnumerable<ProductOverviewModel> PrepareProductOverviewModels(IEnumerable<Product> products,
            bool preparePriceModel = true, bool preparePictureModel = true, int? productThumbPictureSize = null,
            bool prepareSpecificationAttributes = false, bool forceRedirectionAfterAddingToCart = false)
        {
            var models = base.PrepareProductOverviewModels(products,
                preparePriceModel, preparePictureModel, productThumbPictureSize,
                prepareSpecificationAttributes, forceRedirectionAfterAddingToCart);


            foreach (var model in models)
            {
                AddProductMetaData(model.Id, model);
            }


            return models;
        }


        private void AddProductMetaData(int productId, BaseNopModel model)
        {
            var products = _compareProductsService.GetComparedProducts()
                    .Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p))
                    .Where(p => p.IsAvailable())
                    .ToList();


            model.CustomProperties["InCompareList"] = products.Any(p => p.Id == productId)
                ? "in-compare-list" : string.Empty;
        }
    }
}



DependencyRegistrar.cs


using Autofac;
  using Nop.Core.Configuration;
  using Nop.Core.Infrastructure;
  using Nop.Core.Infrastructure.DependencyManagement;
  using Nop.Web.Factories;
  

  namespace Nop.Web.Features
  {
      public class DependencyRegistrar : IDependencyRegistrar
      {
          public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
          {
              builder.RegisterType<CustomProductModelFactory>().As<IProductModelFactory>().InstancePerLifetimeScope();
          }
  

          public int Order { get { return 100; } }
      }
  }
2
اگر پاسخ سوالی برای شما مفید بود، به آن رای مثبت دهید تا به دیگران در پیدا کردن پاسخ مناسب کمک کنید
*******************************************************************************************
Be Who You Always Wanted To Be
2 سال قبل
#1088 نقل و قول
فایل  Views\Shared\_ProductBox.cshtml را باز نموده و کد زیر به آن بیفزایید. (کد بولد شده)

<div class="product-item @Model.CustomProperties["InCompareList"]" data-productid="@Model.Id">

فایل  Views\Product\ProductTemplate.Grouped.cshtml را باز نموده و کد زیر به آن بیفزایید. (کد بولد شده)

<div class="page product-details-page @Model.CustomProperties["InCompareList"]">

فایل  Views\Product\ProductTemplate.Simple.cshtml را باز نموده و کد زیر به آن بیفزایید. (کد بولد شده)

<div class="page product-details-page @Model.CustomProperties["InCompareList"]">


پروژه ی Nop.Web را Rebuild نمایید

موفق باشید
2
اگر پاسخ سوالی برای شما مفید بود، به آن رای مثبت دهید تا به دیگران در پیدا کردن پاسخ مناسب کمک کنید
*******************************************************************************************
Be Who You Always Wanted To Be
2 سال قبل
#1089 نقل و قول
خیلی خیلی ممنونم.لطف کردید
@;--}--
0
دسته بندی ها