add titles, description and images for seo
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { ResolvingMetadata } from "next";
|
||||
import { stripHtml } from "./common";
|
||||
|
||||
export function getSeoDescription(
|
||||
searchDescription?: string | null,
|
||||
excerpt?: string | null,
|
||||
lead?: string | null
|
||||
): string | undefined {
|
||||
if (searchDescription && searchDescription.length) {
|
||||
return searchDescription;
|
||||
}
|
||||
if (excerpt) {
|
||||
const textOnly = stripHtml(excerpt).trim();
|
||||
if (textOnly.length) {
|
||||
return textOnly;
|
||||
}
|
||||
}
|
||||
if (lead) {
|
||||
const textOnly = stripHtml(lead).trim();
|
||||
if (textOnly.length) {
|
||||
return textOnly;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
export async function getSeoMetadata(page: any, parent: ResolvingMetadata) {
|
||||
const title = page.seoTitle ?? page.title;
|
||||
const description = getSeoDescription(
|
||||
page?.searchDescription,
|
||||
page?.excerpt,
|
||||
page?.lead
|
||||
);
|
||||
const parentOpenGraph = (await parent)?.openGraph ?? {};
|
||||
let images = [];
|
||||
if (page?.featuredImage && page.featuredImage.url) {
|
||||
images.push(page.featuredImage.url);
|
||||
}
|
||||
if (page?.logo && page.logo.url) {
|
||||
images.push(page.logo.url);
|
||||
}
|
||||
const openGraph = {
|
||||
...parentOpenGraph,
|
||||
title: title,
|
||||
description: description,
|
||||
images: images,
|
||||
};
|
||||
|
||||
return { title, description, openGraph };
|
||||
}
|
||||
Reference in New Issue
Block a user