diff --git a/src/pages/tag/[tag].astro b/src/pages/blog/tag/[tag].astro
similarity index 72%
rename from src/pages/tag/[tag].astro
rename to src/pages/blog/tag/[tag].astro
index 565347f..20a8168 100644
--- a/src/pages/tag/[tag].astro
+++ b/src/pages/blog/tag/[tag].astro
@@ -5,6 +5,7 @@ import PageTitle from '@/components/PageTitle.astro';
import Section from '@/components/Section.astro';
import BlogCard from '@/components/BlogCard';
import Breadcrumb from '@/components/Breadcrumb.astro';
+import BlogFilter from '@/components/BlogFilter.astro';
import { getCollection } from 'astro:content';
import getTags from '@/lib/getTags';
@@ -12,6 +13,7 @@ export async function getStaticPaths() {
const tags = await getTags();
return tags.map(tag => ({
+ // NOTE: tagに特殊文字が含まれる場合に備えてエンコード
params: { tag },
}));
}
@@ -19,20 +21,25 @@ export async function getStaticPaths() {
const { tag } = Astro.params;
const blogs = await getCollection('blog');
const filteredBlogs = blogs
- .filter(blog => blog.data.tags.includes(tag))
+ .filter(blog =>
+ blog.data.tags.map(tag => encodeURIComponent(tag)).includes(tag)
+ )
.sort((a, b) => {
const dateA = new Date(a.data.pubDate).getTime();
const dateB = new Date(b.data.pubDate).getTime();
return dateB - dateA;
});
-const title = `Blog - #${tag}`;
-const description = `#${tag}タグが付けられたBlogの一覧ページです。`;
+// NOTE: tagをデコードして表示用に戻す
+const decodedTag = decodeURIComponent(tag);
+const title = `Blog - #${decodedTag}`;
+const description = `#${decodedTag}タグが付けられたBlogの一覧ページです。`;
---
+
{
filteredBlogs.length > 0 ? (