-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
HeadSEO.astro
36 lines (29 loc) · 1.54 KB
/
HeadSEO.astro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
---
import { getOpenGraphImageURL } from "../util/getOpenGraphImageURL";
const { canonicalURL, openGraphData } = Astro.props;
let canonicalImageSrc;
if (openGraphData.staticImage) {
const imagePath = canonicalURL.pathname.replaceAll(/\//g, '')
canonicalImageSrc = new URL('images/' + (imagePath ? imagePath : 'index') + '.png', Astro.site);
} else {
const ogImageUrl = getOpenGraphImageURL(canonicalURL.pathname, !!Astro.params.fallback);
const imageSrc = ogImageUrl ? ogImageUrl : '/images/index.png';
canonicalImageSrc = new URL(imageSrc, Astro.site);
}
---
<link rel="canonical" href={canonicalURL} />
<meta property="og:url" content={canonicalURL} />
<meta property="og:title" content={openGraphData.title} />
<meta property="og:description" content={openGraphData.description} />
<meta property="og:type" content={openGraphData.type} />
<meta property="og:locale" content="en_US" />
<meta property="og:image" content={canonicalImageSrc} />
<meta property="og:image:alt" content={openGraphData.title + '—' + openGraphData.description} />
<meta property="og:site_name" content="Open {re}Source" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content={"open_resource"} />
<meta name="twitter:author" content={"JulienDeramond"} />
<meta name="twitter:title" content={openGraphData.title} />
<meta name="twitter:description" content={openGraphData.description} />
<meta name="twitter:image" content={canonicalImageSrc} />
<meta name="twitter:image:alt" content={openGraphData.title + '—' + openGraphData.description} />