diff --git a/app/pages/+Head.tsx b/app/pages/+Head.tsx index 0077d5b..5ceca3e 100755 --- a/app/pages/+Head.tsx +++ b/app/pages/+Head.tsx @@ -36,6 +36,9 @@ export default function HeadDefault() { crossorigin="anonymous" /> + + + { - const canonicalTag = findOrCreateCanonicalTag(); +const updateCanonicalsTag = (pageContext: PageContext) => { + const canonicalNativeTag = findOrCreateTag("link", { + rel: "canonical", + }); + const canonicalOGTag = findOrCreateTag("meta", { + property: "og:url", + }); + const typeOGTag = findOrCreateTag("meta", { + property: "og:type", + }); + const localOGTag = findOrCreateTag("meta", { + property: "og:locale", + }); + const siteNameOGTag = findOrCreateTag("meta", { + property: "og:site_name", + }); + const canonicalUrl = buildPublicUrl( pageContext, pageContext.urlParsed.pathname, ); - canonicalTag.href = canonicalUrl; + canonicalNativeTag.setAttribute("href", canonicalUrl); + canonicalOGTag.setAttribute("content", canonicalUrl); + typeOGTag.setAttribute("content", "website"); + localOGTag.setAttribute("content", "fr-FR"); + siteNameOGTag.setAttribute("content", document.title); }; -const findOrCreateCanonicalTag = () => { +const findOrCreateTag = ( + tagName: string, + attributes: Record, +): T => { const head = document.head; - let canonicalTag: HTMLLinkElement | null = head.querySelector( - "link[rel=canonical]", - ); - if (canonicalTag) return canonicalTag; + let tag: HTMLElement | null = head.querySelector(tagName); + if (tag) return tag as T; - canonicalTag = document.createElement("link"); - canonicalTag.rel = "canonical"; + tag = document.createElement(tagName); + for (const [key, value] of Object.entries(attributes)) { + tag.setAttribute(key, value); + } - document.head.appendChild(canonicalTag); + document.head.appendChild(tag); - return canonicalTag; + return tag as T; };