blob: 0975e8007d7fa34f9cf36e5962316df1b3b3fd9f (
plain) (
blame)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
---
import MainHead from '../components/MainHead.astro';
import Nav from '../components/Nav.astro';
import PostPreview from '../components/PostPreview.astro';
import Pagination from '../components/Pagination.astro';
// page
let title = 'Don’s Blog';
let description = 'An example blog on Astro';
let canonicalURL = Astro.request.canonicalURL;
// collection
import authorData from '../data/authors.json';
let { collection } = Astro.props;
export async function createCollection() {
return {
/** Load posts, sort newest -> oldest */
async data() {
let allPosts = Astro.fetchContent('./post/*.md');
allPosts.sort((a, b) => new Date(b.date) - new Date(a.date));
return allPosts;
},
/** Set page size */
pageSize: 2,
/** Generate RSS feed (only for main /posts/ feed) */
rss: {
title: 'Don’s Blog',
description: 'An example blog on Astro',
customData: `<language>en-us</language>`,
item: (item) => ({
title: item.title,
description: item.description,
link: item.url,
pubDate: item.date,
}),
}
};
}
---
<html>
<head>
<title>{title}</title>
<MainHead
title={title}
description={description}
image={collection.data[0].image}
canonicalURL={canonicalURL}
prev={collection.url.prev}
next={collection.url.next}
/>
<style lang="scss">
.title {
font-size: 3em;
letter-spacing: -0.04em;
margin-top: 2rem;
margin-bottom: 0;
text-align: center;
}
.count {
font-size: 1em;
display: block;
text-align: center;
}
</style>
</head>
<body>
<Nav title={title} />
<main class="wrapper">
<h2 class="title">All Posts</h2>
<small class="count">{collection.start + 1}–{collection.end + 1} of {collection.total}</small>
{collection.data.map((post) => <PostPreview post={post} author={authorData[post.author]} />)}
</main>
<footer>
<Pagination prevUrl={collection.url.prev} nextUrl={collection.url.next} />
</footer>
</body>
</html>
|