diff --git a/src/VirtoCommerce.XCatalog.Core/Extensions/OutlineExtensions.cs b/src/VirtoCommerce.XCatalog.Core/Extensions/OutlineExtensions.cs index 558dc6a..95ba2d8 100644 --- a/src/VirtoCommerce.XCatalog.Core/Extensions/OutlineExtensions.cs +++ b/src/VirtoCommerce.XCatalog.Core/Extensions/OutlineExtensions.cs @@ -147,7 +147,7 @@ public static IEnumerable GetBreadcrumbsFromOutLine(this IEnumerable var breadcrumb = new Breadcrumb(item.SeoObjectType) { ItemId = item.Id, - Title = seoInfoForStoreAndLanguage?.PageTitle?.EmptyToNull() ?? item.Name, + Title = ResolveItemTitle(item, seoInfoForStoreAndLanguage, cultureName), SemanticUrl = seoInfoForStoreAndLanguage?.SemanticUrl, SeoPath = seoPath }; @@ -172,6 +172,22 @@ public static IEnumerable GetBreadcrumbsFromOutLine(this IEnumerable return breadcrumbs; } + private static string ResolveItemTitle(OutlineItem item, SeoInfo seoInfoForStoreAndLanguage, string cultureName) + { + var pageTitle = seoInfoForStoreAndLanguage?.PageTitle?.EmptyToNull(); + if (!string.IsNullOrEmpty(pageTitle)) + { + return pageTitle; + } + + if (item.LocalizedName != null && item.LocalizedName.TryGetValue(cultureName, out var localizedTitle)) + { + return localizedTitle; + } + + return item.Name; + } + public static SeoInfo SeoInfoForStoreAndLanguage(OutlineItem item, string storeId, string cultureName) { return item.SeoInfos?.FirstOrDefault(x => x.StoreId == storeId && x.LanguageCode == cultureName); diff --git a/src/VirtoCommerce.XCatalog.Core/Schemas/CategoryType.cs b/src/VirtoCommerce.XCatalog.Core/Schemas/CategoryType.cs index 34beecf..1b9c834 100644 --- a/src/VirtoCommerce.XCatalog.Core/Schemas/CategoryType.cs +++ b/src/VirtoCommerce.XCatalog.Core/Schemas/CategoryType.cs @@ -34,7 +34,7 @@ public CategoryType(IMediator mediator, IDataLoaderContextAccessor dataLoader) { var cultureName = context.GetArgumentOrValue("cultureName"); var category = context.Source.Category; - var localizedName = category.LocalizedName?.Get(cultureName); + var localizedName = category.LocalizedName?.GetValue(cultureName); if (!string.IsNullOrEmpty(localizedName)) { return localizedName; diff --git a/src/VirtoCommerce.XCatalog.Core/Schemas/ProductType.cs b/src/VirtoCommerce.XCatalog.Core/Schemas/ProductType.cs index 6057da9..eb4e6ba 100644 --- a/src/VirtoCommerce.XCatalog.Core/Schemas/ProductType.cs +++ b/src/VirtoCommerce.XCatalog.Core/Schemas/ProductType.cs @@ -134,7 +134,7 @@ public ProductType(IMediator mediator, IDataLoaderContextAccessor dataLoader) { var cultureName = context.GetArgumentOrValue("cultureName"); var product = context.Source.IndexedProduct; - var localizedName = product.LocalizedName?.Get(cultureName); + var localizedName = product.LocalizedName?.GetValue(cultureName); if (!string.IsNullOrEmpty(localizedName)) { return localizedName; diff --git a/src/VirtoCommerce.XCatalog.Core/VirtoCommerce.XCatalog.Core.csproj b/src/VirtoCommerce.XCatalog.Core/VirtoCommerce.XCatalog.Core.csproj index ddb2b24..882a235 100644 --- a/src/VirtoCommerce.XCatalog.Core/VirtoCommerce.XCatalog.Core.csproj +++ b/src/VirtoCommerce.XCatalog.Core/VirtoCommerce.XCatalog.Core.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/VirtoCommerce.XCatalog.Web/module.manifest b/src/VirtoCommerce.XCatalog.Web/module.manifest index 90017fc..cfe8604 100644 --- a/src/VirtoCommerce.XCatalog.Web/module.manifest +++ b/src/VirtoCommerce.XCatalog.Web/module.manifest @@ -4,9 +4,9 @@ 3.901.0 - 3.867.0 + 3.877.0 - +