NopCommerce:在类别主页上显示畅销产品

时间:2014-02-25 05:36:15

标签: asp.net-mvc-4 nopcommerce

我正在使用NopCommerce。我想在类别主页上显示前三畅销产品。

我知道在视图端使用CategoryTemplate.ProductsInGridOrLines.cshtml和控制器端CatalogController.cs > HomepageBestSellers方法。

我已将类别ID作为参数传递给HomepageBestSellers方法。此类别ID作为参数传递给BestSellersReport方法。

我的问题是如何使用类别ID在类别主页上显示畅销产品?

2 个答案:

答案 0 :(得分:7)

  1. 您应该为畅销书创建一个新的操作方法,您将在其中传递类别ID。
  2. 在此方法中,您应该使用BestSellersReport方法,如下所示:

    _orderReportService.BestSellersReport(storeId:_storeContext.CurrentStore.Id,categoryId:categoryId)

  3. 这个新方法与CatalogController中的HomepageBestSellers非常相似。看看它是如何完成的。

  4. 您应该创建一个视图,例如Views \ Catalog \ HomepageBestSellers.cshtml,并将其显示在您需要的位置。

答案 1 :(得分:0)

NopeCommerce中的畅销产品代码

#region bestsellers and products

        [ChildActionOnly]
        public ActionResult BestSellProduct(int categoryId)
        {

            //load and cache report
            var report = _orderReportService.BestSellersReport(storeId: _storeContext.CurrentStore.Id, categoryId: categoryId);


            //load products
            var products = _productService.GetProductsByIds(report.Select(x => x.ProductId).ToArray());
            //ACL and store mapping
            products = products.Where(p => _aclService.Authorize(p) && _storeMappingService.Authorize(p)).ToList();
            //availability dates
            products = products.Where(p => p.IsAvailable()).ToList();

            if (!products.Any())
                return Content("");

            //prepare model
            var model = PrepareProductOverviewModels(products, true, true, categoryId).ToList();
            return PartialView(model);
        }
        #endregion