Fixes and Changes
This commit is contained in:
67
src/pages/ankuendigungen/[...page].astro
Normal file
67
src/pages/ankuendigungen/[...page].astro
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
import {getCollection} from "astro:content";
|
||||
import PageLayout from "../../layouts/PageLayout.astro";
|
||||
import {astroI18n, createGetStaticPaths, t} from "astro-i18n";
|
||||
import PostComponent from "../../components/PostComponent.astro";
|
||||
import dayjs from "dayjs";
|
||||
import TagComponent from "../../components/TagComponent.astro";
|
||||
import SWPaginator from "@components/styled/SWPaginator.svelte";
|
||||
|
||||
export const getStaticPaths = createGetStaticPaths(async (props) => {
|
||||
const posts = await getCollection("announcements", entry => entry.id.split("/")[0] === astroI18n.locale);
|
||||
|
||||
const germanPosts = await getCollection("announcements", entry => entry.id.split("/")[0] === astroI18n.fallbackLocale);
|
||||
|
||||
germanPosts.forEach(value => {
|
||||
if (posts.find(post => post.data.key === value.data.key)) {
|
||||
return;
|
||||
} else {
|
||||
posts.push(value);
|
||||
}
|
||||
});
|
||||
|
||||
return props.paginate(posts.sort((a, b) => dayjs(b.data.created).unix() - dayjs(a.data.created).unix()), {
|
||||
pageSize: 5,
|
||||
});
|
||||
});
|
||||
|
||||
async function getTags() {
|
||||
const posts = await getCollection("announcements");
|
||||
const tags = new Map<string, number>();
|
||||
posts.forEach(post => {
|
||||
post.data.tags.forEach(tag => {
|
||||
if (tags.has(tag)) {
|
||||
tags.set(tag, tags.get(tag) + 1);
|
||||
} else {
|
||||
tags.set(tag, 1);
|
||||
}
|
||||
});
|
||||
});
|
||||
return Array.from(tags).sort((a, b) => b[1] - a[1]).map(value => value[0]);
|
||||
}
|
||||
|
||||
const { page } = Astro.props;
|
||||
const tags = await getTags();
|
||||
---
|
||||
|
||||
<PageLayout title={t("blog.title")}>
|
||||
<div class="py-2">
|
||||
{tags.map(tag => (
|
||||
<TagComponent tag={tag} transition:name={`${tag}-tag-filter`} />
|
||||
))}
|
||||
</div>
|
||||
{page.data.map((post) => (
|
||||
<div>
|
||||
<PostComponent post={post}/>
|
||||
</div>
|
||||
))}
|
||||
<SWPaginator
|
||||
maxPage={page.lastPage}
|
||||
page={page.currentPage - 1}
|
||||
nextUrl={page.url.next}
|
||||
previousUrl={page.url.prev}
|
||||
firstUrl={page.url.first}
|
||||
lastUrl={page.url.last}
|
||||
pagesUrl={(i) => i == 0 ? page.url.first : page.currentPage === page.lastPage ? page.url.current.replace(page.lastPage, i + 1) : page.url.last.replace(page.lastPage, i + 1)}
|
||||
/>
|
||||
</PageLayout>
|
||||
Reference in New Issue
Block a user