public string GetUrlInCategoryOrCanonical(IProduct product, ICategory category) { if (product == null) { throw new ArgumentNullException("product"); } if (product.Categories == null) { throw new Exception("Product with null Categories"); } if (_categoryCatalogUrlService == null) { throw new Exception("Some serious configuration error occured"); } if (category == null || !product.Categories.Any(c => c.Id == category.Id)) { category = product.Categories.FirstOrDefault(); } // todo: products can get their own url using storeUrl/productUrlName, but resolving and name conflicts need to be fixed if (category == null) { return(product.UrlName); } return(_categoryCatalogUrlService.GetCanonicalUrl(category) + "/" + product.UrlName); }
public string CategoryCanonicalUrl(ICategory category, ILocalization localization) { category = _categoryService.Localize(category, localization); return(_categoryCatalogUrlService.GetCanonicalUrl(category)); }