Merged in SW-3490-set-metadata-for-routes (pull request #2881)
SW-3490 set metadata for routes * feat(SW-3490): Set metadata title for hotelreservation paths Approved-by: Anton Gunnarsson
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
getDestinationFilterSeoMetaTitle,
|
||||
getDestinationPageTitle,
|
||||
} from "./destinationPage"
|
||||
import { getTitlePrefix } from "./getTitlePrefix"
|
||||
import { getHotelPageTitle } from "./hotelPage"
|
||||
|
||||
import type { RawMetadataSchema } from "@scandic-hotels/trpc/routers/contentstack/metadata/output"
|
||||
@@ -17,13 +18,14 @@ function getTitleSuffix(contentType: string) {
|
||||
case PageContentTypeEnum.destinationOverviewPage:
|
||||
case PageContentTypeEnum.destinationCityPage:
|
||||
case PageContentTypeEnum.destinationCountryPage:
|
||||
return " | Scandic Hotels"
|
||||
return "Scandic Hotels"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
export async function getTitle(data: RawMetadataSchema) {
|
||||
const prefix = getTitlePrefix()
|
||||
const suffix = getTitleSuffix(data.system.content_type_uid)
|
||||
const metadata = data.web?.seo_metadata
|
||||
const isDestinationPage = [
|
||||
@@ -32,48 +34,41 @@ export async function getTitle(data: RawMetadataSchema) {
|
||||
].includes(data.system.content_type_uid as PageContentTypeEnum)
|
||||
|
||||
if (isDestinationPage) {
|
||||
const destinationFilterSeoMetaTitle = getDestinationFilterSeoMetaTitle(
|
||||
data,
|
||||
suffix
|
||||
)
|
||||
const destinationFilterSeoMetaTitle = getDestinationFilterSeoMetaTitle(data)
|
||||
if (destinationFilterSeoMetaTitle) {
|
||||
return destinationFilterSeoMetaTitle
|
||||
}
|
||||
}
|
||||
|
||||
if (metadata?.title) {
|
||||
return `${metadata.title}${suffix}`
|
||||
return combineSegments([prefix, metadata.title, suffix])
|
||||
}
|
||||
|
||||
let title: string | null = null
|
||||
let title: string | null | undefined = null
|
||||
|
||||
switch (data.system.content_type_uid) {
|
||||
case PageContentTypeEnum.hotelPage:
|
||||
title = await getHotelPageTitle(data)
|
||||
break
|
||||
case PageContentTypeEnum.destinationCityPage:
|
||||
title = await getDestinationPageTitle(data, "city", suffix)
|
||||
title = await getDestinationPageTitle(data, "city")
|
||||
break
|
||||
case PageContentTypeEnum.destinationCountryPage:
|
||||
title = await getDestinationPageTitle(data, "country", suffix)
|
||||
title = await getDestinationPageTitle(data, "country")
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
if (title) {
|
||||
return title
|
||||
}
|
||||
|
||||
// Fallback titles from contentstack content
|
||||
if (data.web?.breadcrumbs?.title) {
|
||||
return `${data.web.breadcrumbs.title}${suffix}`
|
||||
}
|
||||
if (data.heading) {
|
||||
return `${data.heading}${suffix}`
|
||||
}
|
||||
if (data.header?.heading) {
|
||||
return `${data.header.heading}${suffix}`
|
||||
}
|
||||
return ""
|
||||
title ||= data.web?.breadcrumbs?.title || data.heading || data.header?.heading
|
||||
|
||||
return combineSegments([prefix, title, suffix])
|
||||
}
|
||||
|
||||
function combineSegments(
|
||||
segments: (string | null | undefined)[],
|
||||
delimiter = " | "
|
||||
) {
|
||||
return segments.filter(Boolean).join(delimiter).trim()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user