From 6d4ef05b16536dd4c998de6779f51f8588a453c8 Mon Sep 17 00:00:00 2001 From: tuna2134 Date: Sun, 4 May 2025 04:20:13 +0000 Subject: [PATCH] refactor: update blog page layout and add blog list functionality --- app/(pages)/blogs/[slug]/page.tsx | 4 +-- app/(pages)/blogs/page.tsx | 42 +++++++++++++++++++++++++++++++ app/layout.tsx | 9 +++++-- blogs/hello.mdx | 8 ++++-- 4 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 app/(pages)/blogs/page.tsx diff --git a/app/(pages)/blogs/[slug]/page.tsx b/app/(pages)/blogs/[slug]/page.tsx index c12ceb7..84c20eb 100644 --- a/app/(pages)/blogs/[slug]/page.tsx +++ b/app/(pages)/blogs/[slug]/page.tsx @@ -15,10 +15,10 @@ export default async function Page({ params }: Props) { return ( <>
-

+

{metadata.title}

-
+

作成日時:{metadata.datetime}

diff --git a/app/(pages)/blogs/page.tsx b/app/(pages)/blogs/page.tsx new file mode 100644 index 0000000..7373598 --- /dev/null +++ b/app/(pages)/blogs/page.tsx @@ -0,0 +1,42 @@ +import fs from "fs/promises"; +import { NextPage } from "next"; + +const Page: NextPage = async () => { + const blogs = (await fs.readdir("blogs")) + .filter((name) => name.endsWith(".mdx")) + .map(async (name) => ({ + slug: name.replace(/\.mdx$/, ""), + metadata: (await import(`@/blogs/${name}`)).metadata, + })); + const blogList = await Promise.all(blogs); + blogList.sort((a, b) => { + const dateA = new Date(a.metadata.datetime); + const dateB = new Date(b.metadata.datetime); + return dateB.getTime() - dateA.getTime(); + }); + return ( +
+

ブログ一覧

+ +
+ ); +}; + +export default Page; diff --git a/app/layout.tsx b/app/layout.tsx index 8d925f0..b09848c 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,5 +1,5 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Geist, Geist_Mono, Noto_Sans_JP } from "next/font/google"; import "./globals.css"; const geistSans = Geist({ @@ -12,6 +12,11 @@ const geistMono = Geist_Mono({ subsets: ["latin"], }); +const notoSansJP = Noto_Sans_JP({ + variable: "--font-noto-sans-jp", + subsets: ["latin"], +}); + export const metadata: Metadata = { title: "tuna2134", description: "tuna2134 official website", @@ -25,7 +30,7 @@ export default function RootLayout({ return ( {children} diff --git a/blogs/hello.mdx b/blogs/hello.mdx index 37e1af6..ba013c3 100644 --- a/blogs/hello.mdx +++ b/blogs/hello.mdx @@ -1,7 +1,11 @@ export const metadata = { title: "書き直し", description: "久しぶりに書き直しました。", - datetime: "2025/05/03", + datetime: "2025/05/04", }; -# Hello \ No newline at end of file +# 久しぶりの書き直し +久しぶりにウェブサイトを書き直しました。 + +## 変更点 +- ブログの再開 - 結構どうでもいいことを記事にするつもりです。 \ No newline at end of file