mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
feat: add seo tags, opengraph & robots directives
This commit is contained in:
parent
ab69824746
commit
642ad70da8
6 changed files with 107 additions and 6 deletions
|
|
@ -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',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue