NopCommerce: отображение товаров-бестселлеров на главной странице категории.

Я использую НопКоммерс. Я хочу отобразить 3 самых продаваемых продукта на главной странице категории.

У меня возникла идея, что на стороне представления используется метод CategoryTemplate.ProductsInGridOrLines.cshtml и на стороне контроллера CatalogController.cs > HomepageBestSellers.

Я передал идентификатор категории в качестве параметра методу HomepageBestSellers. Идентификатор этой категории передается методу BestSellersReport в качестве параметра.

Мой вопрос: как я могу использовать идентификатор категории для отображения товаров-бестселлеров на главной странице категории?


person Tushar    schedule 25.02.2014    source источник


Ответы (2)


  1. Вы должны создать новый метод действия для бестселлеров, в котором вы будете передавать идентификатор категории.
  2. В этом методе вы должны использовать метод BestSellersReport, как здесь:

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

  3. Этот новый метод очень похож на HomepageBestSellers в CatalogController. Посмотрите, как это делается.

  4. И вы должны создать представление, например Views\Catalog\HomepageBestSellers.cshtml, и показать его там, где вам нужно.
person mariann    schedule 25.02.2014
comment
не могли бы вы рассказать мне, как я могу соединить таблицу категорий с таблицей заказов с помощью запроса? - person Tushar; 25.02.2014
comment
почему ты хочешь сделать это? - person mariann; 25.02.2014
comment
Я хочу показать бестселлер только для этой конкретной категории. - person Tushar; 25.02.2014
comment
Следуйте инструкциям, которые я написал. Больше не нужно ничего делать. Посмотрите на метод HomepageBestSellers — ваш код должен быть очень похож на него. - person mariann; 26.02.2014
comment
_orderReportService.BestSellersReport(storeId: _storeContext.CurrentStore.Id, categoryId: categoryId). categoryId здесь указывает, что товары отображаются только для категории с этим id. - person mariann; 26.02.2014

Код продукта бестселлера в 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
person K-Series    schedule 14.10.2016