public ActionResult ProductBreadcrumb(int productId) { var product = _productService.GetProductById(productId); if (product == null) throw new ArgumentException("No product found with the specified id"); if (!_catalogSettings.CategoryBreadcrumbEnabled) return Content(""); var model = new ProductDetailsModel.ProductBreadcrumbModel { ProductId = product.Id, ProductName = product.GetLocalized(x => x.Name), ProductSeName = product.GetSeName() }; var breadcrumb = _helper.GetCategoryBreadCrumb(0, productId); model.CategoryBreadcrumb = breadcrumb; return PartialView(model); }
public ActionResult ProductBreadcrumb(int productId) { var product = _productService.GetProductById(productId); if (product == null) throw new ArgumentException("No product found with the specified id"); if (!_catalogSettings.CategoryBreadcrumbEnabled) return Content(""); var customerRolesIds = _workContext.CurrentCustomer.CustomerRoles .Where(cr => cr.Active).Select(cr => cr.Id).ToList(); var cacheKey = string.Format(ModelCacheEventConsumer.PRODUCT_BREADCRUMB_MODEL_KEY, product.Id, _workContext.WorkingLanguage.Id, string.Join(",", customerRolesIds), _storeContext.CurrentStore.Id); var cacheModel = _cacheManager.Get(cacheKey, () => { var model = new ProductDetailsModel.ProductBreadcrumbModel() { ProductId = product.Id, ProductName = product.GetLocalized(x => x.Name), ProductSeName = product.GetSeName() }; var productCategories = _categoryService.GetProductCategoriesByProductId(product.Id); if (productCategories.Count > 0) { var category = productCategories[0].Category; if (category != null) { foreach (var catBr in GetCategoryBreadCrumb(category)) { model.CategoryBreadcrumb.Add(new CategoryModel() { Id = catBr.Id, Name = catBr.GetLocalized(x => x.Name), SeName = catBr.GetSeName() }); } } } return model; }); return PartialView(cacheModel); }