forked from ProjectSegfault/website
add prev/next post
This commit is contained in:
parent
b812dabed5
commit
ddba1fc23e
@ -7,6 +7,6 @@
|
|||||||
<slot />
|
<slot />
|
||||||
|
|
||||||
{#if url}
|
{#if url}
|
||||||
<a href={url}>View on Ghost</a>
|
<a href={url} class="text-center">View on Ghost</a>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
@ -4,7 +4,10 @@ import fetchApi from "$lib/ghost";
|
|||||||
export const load = (async ({ params }) => {
|
export const load = (async ({ params }) => {
|
||||||
const data = await fetchApi("posts/slug/" + params.title);
|
const data = await fetchApi("posts/slug/" + params.title);
|
||||||
|
|
||||||
|
const allPosts = await fetchApi("posts");
|
||||||
|
|
||||||
return {
|
return {
|
||||||
post: data.posts[0]
|
post: data.posts[0],
|
||||||
|
allPosts: allPosts
|
||||||
};
|
};
|
||||||
}) satisfies PageServerLoad;
|
}) satisfies PageServerLoad;
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { PostOuter, Title, Meta, PostContent, ReadMore, PostsContainer } from "$lib/BlogCard";
|
||||||
|
|
||||||
import type { PageData } from "./$types";
|
import type { PageData } from "./$types";
|
||||||
export let data: PageData;
|
export let data: PageData;
|
||||||
|
|
||||||
import { PostOuter, Title, Meta, PostContent } from "$lib/BlogCard";
|
$: index = data.allPosts.posts.findIndex((post: { slug: string; }) => post.slug === data.post.slug);
|
||||||
|
$: next = data.allPosts.posts[index - 1];
|
||||||
|
$: previous = data.allPosts.posts[index + 1];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
@ -15,4 +19,31 @@
|
|||||||
<Meta post={data.post} isPost />
|
<Meta post={data.post} isPost />
|
||||||
</div>
|
</div>
|
||||||
<PostContent {data} />
|
<PostContent {data} />
|
||||||
</PostOuter>
|
</PostOuter>
|
||||||
|
<div class="flex flex-row flex-wrap justify-center my-4">
|
||||||
|
<PostsContainer>
|
||||||
|
{#if previous}
|
||||||
|
<PostOuter>
|
||||||
|
<h1 class="more-posts">Previous post</h1>
|
||||||
|
<Title post={previous} />
|
||||||
|
<Meta post={previous} />
|
||||||
|
<ReadMore post={previous} />
|
||||||
|
</PostOuter>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{#if next}
|
||||||
|
<PostOuter>
|
||||||
|
<h1 class="more-posts">Next post</h1>
|
||||||
|
<Title post={next} />
|
||||||
|
<Meta post={next} />
|
||||||
|
<ReadMore post={next} />
|
||||||
|
</PostOuter>
|
||||||
|
{/if}
|
||||||
|
</PostsContainer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.more-posts {
|
||||||
|
@apply border-b-solid border-b-grey border-b-1 m-0;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user