11---
22import CaptchaScripts from ' ../../components/Captcha/CaptchaScripts.astro' ;
3- import FAQs from ' ../../components/FAQs.astro' ;
3+ import FAQs from ' ../../components/FAQs/FAQs .astro' ;
44import InteractiveRoadmap from ' ../../components/InteractiveRoadmap/InteractiveRoadmap.astro' ;
55import MarkdownRoadmap from ' ../../components/MarkdownRoadmap.astro' ;
66import RoadmapHeader from ' ../../components/RoadmapHeader.astro' ;
77import UpcomingRoadmap from ' ../../components/UpcomingRoadmap.astro' ;
88import BaseLayout from ' ../../layouts/BaseLayout.astro' ;
9+ import { generateArticleSchema , generateFAQSchema } from ' ../../lib/jsonld-schema' ;
910import { getRoadmapIds , RoadmapFrontmatter } from ' ../../lib/roadmap' ;
1011
1112export async function getStaticPaths() {
@@ -22,8 +23,28 @@ interface Params extends Record<string, string | undefined> {
2223
2324const { roadmapId } = Astro .params as Params ;
2425const roadmapFile = await import (` ../../roadmaps/${roadmapId }/${roadmapId }.md ` );
25- const questions = await import (` ../../roadmaps/${roadmapId }/faqs.astro ` );
26+ const { faqs : roadmapFAQs = [] } = await import (` ../../roadmaps/${roadmapId }/faqs.astro ` );
2627const roadmapData = roadmapFile .frontmatter as RoadmapFrontmatter ;
28+
29+ let jsonLdSchema = [];
30+
31+ if (roadmapData .schema ) {
32+ const roadmapSchema = roadmapData .schema ;
33+ jsonLdSchema .push (
34+ generateArticleSchema ({
35+ url: ` https://roadmap.sh/${roadmapId } ` ,
36+ headline: roadmapSchema .headline ,
37+ description: roadmapSchema .description ,
38+ datePublished: roadmapSchema .datePublished ,
39+ dateModified: roadmapSchema .dateModified ,
40+ imageUrl: roadmapSchema .imageUrl ,
41+ })
42+ );
43+ }
44+
45+ if (roadmapFAQs .length ) {
46+ jsonLdSchema .push (generateFAQSchema (roadmapFAQs ));
47+ }
2748---
2849
2950<BaseLayout
@@ -33,6 +54,7 @@ const roadmapData = roadmapFile.frontmatter as RoadmapFrontmatter;
3354 keywords ={ roadmapData .seo .keywords }
3455 sponsor ={ roadmapData .sponsor }
3556 noIndex ={ roadmapData .isUpcoming }
57+ jsonLd ={ jsonLdSchema }
3658>
3759 <RoadmapHeader
3860 description ={ roadmapData .description }
@@ -55,17 +77,15 @@ const roadmapData = roadmapFile.frontmatter as RoadmapFrontmatter;
5577
5678 {
5779 ! roadmapData .isUpcoming && ! roadmapData .jsonUrl && (
58- <MarkdownRoadmap
59- roadmapId = { roadmapId }
60- description = { roadmapData .description }
61- >
80+ <MarkdownRoadmap roadmapId = { roadmapId } description = { roadmapData .description } >
6281 <roadmapFile.Content />
6382 </MarkdownRoadmap >
6483 )
6584 }
6685
6786 { roadmapData .isUpcoming && <UpcomingRoadmap />}
6887
69- <questions .default />
88+ <FAQs faqs ={ roadmapFAQs } />
89+
7090 <CaptchaScripts slot =' after-footer' />
7191</BaseLayout >
0 commit comments