From 0b538262182fa0161806e2823514010dadecfa9b Mon Sep 17 00:00:00 2001 From: DmitriyKulagin Date: Tue, 9 Mar 2021 11:57:43 +0300 Subject: [PATCH] #5507 Catalog pages without products should not display "No products were found that matched your criteria" --- .../Nop.Web/Factories/CatalogModelFactory.cs | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Presentation/Nop.Web/Factories/CatalogModelFactory.cs b/src/Presentation/Nop.Web/Factories/CatalogModelFactory.cs index fa4484836f2..ad5823202aa 100644 --- a/src/Presentation/Nop.Web/Factories/CatalogModelFactory.cs +++ b/src/Presentation/Nop.Web/Factories/CatalogModelFactory.cs @@ -354,13 +354,14 @@ Task toWorkingCurrencyAsync(decimal? price) /// /// Catalog products model /// The products + /// A value indicating that filtering has been applied /// A task that represents the asynchronous operation - protected virtual async Task PrepareCatalogProductsAsync(CatalogProductsModel model, IPagedList products) + protected virtual async Task PrepareCatalogProductsAsync(CatalogProductsModel model, IPagedList products, bool isFiltering = false) { if (!string.IsNullOrEmpty(model.WarningMessage)) return; - if (products.Count == 0) + if (products.Count == 0 && isFiltering) model.NoResultMessage = await _localizationService.GetResourceAsync("Catalog.Products.NoResult"); else { @@ -778,7 +779,8 @@ public virtual async Task PrepareCategoryProductsModelAsyn filteredSpecOptions: filteredSpecs, orderBy: (ProductSortingEnum)command.OrderBy); - await PrepareCatalogProductsAsync(model, products); + var isFiltering = filterableOptions.Any() || selectedPriceRange is not null; + await PrepareCatalogProductsAsync(model, products, isFiltering); return model; } @@ -1036,7 +1038,8 @@ public virtual async Task PrepareManufacturerProductsModel filteredSpecOptions: filteredSpecs, orderBy: (ProductSortingEnum)command.OrderBy); - await PrepareCatalogProductsAsync(model, products); + var isFiltering = filterableOptions.Any() || selectedPriceRange is not null; + await PrepareCatalogProductsAsync(model, products, isFiltering); return model; } @@ -1277,7 +1280,8 @@ public virtual async Task PrepareVendorProductsModelAsync( visibleIndividuallyOnly: true, orderBy: (ProductSortingEnum)command.OrderBy); - await PrepareCatalogProductsAsync(model, products); + var isFiltering = selectedPriceRange is not null; + await PrepareCatalogProductsAsync(model, products, isFiltering); return model; } @@ -1521,7 +1525,8 @@ public virtual async Task PrepareTagProductsModelAsync(Pro visibleIndividuallyOnly: true, orderBy: (ProductSortingEnum)command.OrderBy); - await PrepareCatalogProductsAsync(model, products); + var isFiltering = selectedPriceRange is not null; + await PrepareCatalogProductsAsync(model, products, isFiltering); return model; } @@ -1807,7 +1812,8 @@ public virtual async Task PrepareSearchProductsModelAsync( } } - await PrepareCatalogProductsAsync(model, products); + var isFiltering = !string.IsNullOrEmpty(searchTerms); + await PrepareCatalogProductsAsync(model, products, isFiltering); return model; }