diff --git a/package.json b/package.json index eb163be..2b6bef5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hat-ring-components", - "version": "4.6.2", + "version": "4.6.3", "description": "Head App Template - RING components", "license": "MIT", "repository": {}, diff --git a/src/helpers/UtilsHelper.ts b/src/helpers/UtilsHelper.ts index 123580b..f43db9e 100644 --- a/src/helpers/UtilsHelper.ts +++ b/src/helpers/UtilsHelper.ts @@ -51,16 +51,17 @@ export function UtilsHelper_getCurrentPageType(context) { return isHomePage ? SiteContentType.Homepage : (context.siteContentType || null); } + export function UtilsHelper_getCurrentNodeName(context) { try { const content = context?.hatControllerParams?.gqlResponse?.data?.site?.data?.content; if (content) { - const pageType = UtilsHelper_getCurrentPageType(context); - + const pageType = UtilsHelper_getCurrentPageType(context); if (pageType === SiteContentType.SiteNode) { - // @TODO: getting name for sitenode/category in HAT Server? - const slug = content.slug?.replaceAll('-', ' ') || ''; - return (slug.charAt(0).toUpperCase() + slug.slice(1)) || ''; + const categoryName = _.get(context, 'hatControllerParams.gqlResponse.data.site.data.node.category.data.name', ''); + if (categoryName) return categoryName; + const slug = content.slug || ''; + return _.capitalize(UtilsHelper_slugify(slug)); } else if (pageType === SiteContentType.Story) { return content.title || ''; } else if (pageType === SiteContentType.CustomAction) { @@ -68,8 +69,7 @@ export function UtilsHelper_getCurrentNodeName(context) { } else if ([SiteContentType.Source, SiteContentType.Topic].includes(pageType)) { return content.name || ''; } else if (pageType === SiteContentType.Author) { - // @TODO: get author name in HAT Server - return ''; + return content.name || ''; } } } catch (e) { diff --git a/src/helpers/seo/SeoHelper.ts b/src/helpers/seo/SeoHelper.ts index 89b73a7..56581dd 100644 --- a/src/helpers/seo/SeoHelper.ts +++ b/src/helpers/seo/SeoHelper.ts @@ -152,6 +152,9 @@ export async function SeoHelper_getSeoCurrentPageType(context) { export async function SeoHelper_authorName(context) { + const authorNameFromContext = _.get(context, 'hatControllerParams.gqlResponse.data.site.data.content.name', ''); + if (authorNameFromContext) return authorNameFromContext; + const query = gql` query($uuid: UUID){ author(id:$uuid){ diff --git a/src/helpers/seo/SeoTitleHelper.ts b/src/helpers/seo/SeoTitleHelper.ts index ebf3bc4..f50f111 100644 --- a/src/helpers/seo/SeoTitleHelper.ts +++ b/src/helpers/seo/SeoTitleHelper.ts @@ -8,7 +8,7 @@ import {WebsiteApiProvider} from "../../providers/WebsiteApiProvider"; import {gql} from "graphql-tag"; import _ from "lodash"; import {SeoHelper_getSeoCurrentPageType} from "./SeoHelper"; -import {UtilsHelper_getDomain} from "../UtilsHelper"; +import {UtilsHelper_getDomain, UtilsHelper_slugify} from "../UtilsHelper"; /** * Helper for handling titles according to the SEO requirements based on the placement of the usage @@ -90,11 +90,15 @@ export async function SeoTitleHelper_pageTitle(context, place: string) { } async function getCategoryName() { + const categoryNameFromContext = _.get(context, 'hatControllerParams.gqlResponse.data.site.data.node.category.data.name', ''); + if (categoryNameFromContext) return categoryNameFromContext; + const nodeQuery = gql` query($url: URL!, $variant:ID!){ site(url:$url, variantId: $variant){ data { node { + slug category { data{ name @@ -111,7 +115,11 @@ export async function SeoTitleHelper_pageTitle(context, place: string) { variant: context.websiteManagerVariant, }); - return _.get(nodeResponse, 'data.site.data.node.category.data.name', ''); + const categoryName = _.get(nodeResponse, 'data.site.data.node.category.data.name', ''); + if (categoryName) return categoryName; + + const slug = _.get(nodeResponse, 'data.site.data.node.slug', ''); + return _.capitalize(UtilsHelper_slugify(slug)); } async function prepareCategoryTitle() {