feat: add seo tags, opengraph & robots directives

This commit is contained in:
swve 2023-09-19 19:50:54 +02:00
parent ab69824746
commit 642ad70da8
6 changed files with 107 additions and 6 deletions

View file

@ -23,11 +23,25 @@ export async function generateMetadata(
const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] }); const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] });
const col = await getCollectionByIdWithAuthHeader(params.collectionid, access_token ? access_token : null, { revalidate: 0, tags: ['collections'] }); const col = await getCollectionByIdWithAuthHeader(params.collectionid, access_token ? access_token : null, { revalidate: 0, tags: ['collections'] });
// SEO
return { return {
title: `Collection : ${col.name}${org.name}`, title: `Collection : ${col.name}${org.name}`,
description: `${col.description} `, description: `${col.description} `,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: `Collection : ${col.name}${org.name}`,
description: `${col.description} `,
type: 'website',
},
}; };
} }

View file

@ -22,9 +22,26 @@ export async function generateMetadata(
const cookieStore = cookies(); const cookieStore = cookies();
// Get Org context information // Get Org context information
const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] }); const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] });
// SEO
return { return {
title: `Collections — ${org.name}`, title: `Collections — ${org.name}`,
description: `Collections of courses from ${org.name}`, description: `Collections of courses from ${org.name}`,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: `Collections — ${org.name}`,
description: `Collections of courses from ${org.name}`,
type: 'website',
},
}; };
} }

View file

@ -23,9 +23,28 @@ export async function generateMetadata(
const course_meta = await getCourseMetadataWithAuthHeader(params.courseid, { revalidate: 0, tags: ['courses'] }, access_token ? access_token : null) const course_meta = await getCourseMetadataWithAuthHeader(params.courseid, { revalidate: 0, tags: ['courses'] }, access_token ? access_token : null)
const activity = await getActivityWithAuthHeader(params.activityid, { revalidate: 0, tags: ['activities'] }, access_token ? access_token : null) const activity = await getActivityWithAuthHeader(params.activityid, { revalidate: 0, tags: ['activities'] }, access_token ? access_token : null)
// SEO
return { return {
title: activity.name + `${course_meta.course.name} Course`, title: activity.name + `${course_meta.course.name} Course`,
description: course_meta.course.mini_description, description: course_meta.course.mini_description,
keywords: course_meta.course.learnings,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: activity.name + `${course_meta.course.name} Course`,
description: course_meta.course.mini_description,
type: activity.type === 'video' ? 'video.other' : 'article',
publishedTime: course_meta.course.creationDate,
tags: course_meta.course.learnings,
},
}; };
} }

View file

@ -17,19 +17,37 @@ export async function generateMetadata(
const cookieStore = cookies(); const cookieStore = cookies();
const access_token = await getAccessTokenFromRefreshTokenCookie(cookieStore) const access_token = await getAccessTokenFromRefreshTokenCookie(cookieStore)
// Get Org context information // Get Org context information
const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] }); const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] });
const course_meta = await getCourseMetadataWithAuthHeader(params.courseid, { revalidate: 0, tags: ['courses'] }, access_token ? access_token : null) const course_meta = await getCourseMetadataWithAuthHeader(params.courseid, { revalidate: 0, tags: ['courses'] }, access_token ? access_token : null)
// SEO
return { return {
title: course_meta.course.name + `${org.name}`, title: course_meta.course.name + `${org.name}`,
description: course_meta.course.mini_description, description: course_meta.course.mini_description,
keywords: course_meta.course.learnings,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: course_meta.course.name + `${org.name}`,
description: course_meta.course.mini_description,
type: 'article',
publishedTime: course_meta.course.creationDate,
tags: course_meta.course.learnings,
},
}; };
} }
const CoursePage = async (params: any) => { const CoursePage = async (params: any) => {
const cookieStore = cookies(); const cookieStore = cookies();
const courseid = params.params.courseid const courseid = params.params.courseid

View file

@ -18,9 +18,27 @@ export async function generateMetadata(
// Get Org context information // Get Org context information
const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] }); const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] });
// SEO
return { return {
title: "Courses — " + org.name, title: "Courses — " + org.name,
description: org.description, description: org.description,
keywords: `${org.name}, ${org.description}, courses, learning, education, online learning, edu, online courses, ${org.name} courses`,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: "Courses — " + org.name,
description: org.description,
type: 'website',
},
}; };
} }

View file

@ -22,13 +22,28 @@ type MetadataProps = {
export async function generateMetadata( export async function generateMetadata(
{ params }: MetadataProps, { params }: MetadataProps,
): Promise<Metadata> { ): Promise<Metadata> {
// Get Org context information // Get Org context information
const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] }); const org = await getOrganizationContextInfo(params.orgslug, { revalidate: 1800, tags: ['organizations'] });
// SEO
return { return {
title: `Home — ${org.name}`, title: `Home — ${org.name}`,
description: org.description, description: org.description,
robots: {
index: true,
follow: true,
nocache: true,
googleBot: {
index: true,
follow: true,
"max-image-preview": "large",
}
},
openGraph: {
title: `Home — ${org.name}`,
description: org.description,
type: 'website',
},
}; };
} }