دسته بندی
    بسته

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

    6 سال پیش
    #1082 نقل قول
    سلام و عرض خسته نباشید
    من یک سری محصول ویژه در صفحه اصلی فروشگاه اینترنتیم دارم. وقتی یک مشتری اونها رو به لیست مقایسه اضافه میکنه، اون کالا رنگ دکمه رو تغییر میده.
    حالا من دنبال تابعی میگردم که بتونم اطلاعات لیست مقایسه رو بگیرم و ببینم کالایی که مشتری الان داره مشاهده میکنه، توی لیست مقایسه هست یا نه. اگر هست، رنگ دکمه متفاوت باشه.
    آیا کسی میتونه کمکم کنه؟
    1
    6 سال پیش
    #1083 نقل قول
    من از ناپ کامرس 4.00 استفاده میکنم
    0
    6 سال پیش
    #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
    6 سال پیش
    #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
    6 سال پیش
    #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
    6 سال پیش
    #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
    6 سال پیش
    #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
    6 سال پیش
    #1089 نقل قول
    خیلی خیلی ممنونم.لطف کردید
    @;--}--
    0
    دسته بندی ها