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);
        }
예제 #2
0
 public string CategoryCanonicalUrl(ICategory category, ILocalization localization)
 {
     category = _categoryService.Localize(category, localization);
     return(_categoryCatalogUrlService.GetCanonicalUrl(category));
 }