summaryrefslogtreecommitdiff
path: root/src/app/article/tag
diff options
context:
space:
mode:
authorFushihara <1039534+fushihara@users.noreply.github.com>2024-09-23 15:19:25 +0900
committerFushihara <1039534+fushihara@users.noreply.github.com>2024-09-23 15:19:25 +0900
commitba0c8d73e585d7ff249dd90684254bc7fa025544 (patch)
tree3b35be04e7bf11eb046246696d45fb8854f01f14 /src/app/article/tag
parent41eff0687f69539a514cfa3a28a68f89fc8c54fd (diff)
commit
Diffstat (limited to 'src/app/article/tag')
-rw-r--r--src/app/article/tag/[tagName]/page.tsx40
-rw-r--r--src/app/article/tag/page.tsx30
-rw-r--r--src/app/article/tag/style.css3
3 files changed, 73 insertions, 0 deletions
diff --git a/src/app/article/tag/[tagName]/page.tsx b/src/app/article/tag/[tagName]/page.tsx
new file mode 100644
index 0000000..3df1f1e
--- /dev/null
+++ b/src/app/article/tag/[tagName]/page.tsx
@@ -0,0 +1,40 @@
+import { ArticleLoader } from "../../../../util/articleLoader";
+import { ArticleListElement } from "../../_components/articleListElement";
+type PageType = {
+ searchParams: Record<string, string>,
+ params: {
+ tagName: string,
+ }
+}
+export async function generateMetadata(context: PageType) {
+ return {
+ title: `アキバ総研アーカイブ:ページ ${context.params.tagName}`,
+ }
+}
+export default async function Page(context: PageType) {
+ const al = new ArticleLoader()
+ const nowPageTagName = decodeURIComponent(context.params.tagName);
+ const loadedData = await al.loadData().then(articles => {
+ const filterd = articles.filter(article => {
+ if (article.tags.includes(nowPageTagName)) {
+ return true;
+ } else {
+ return false;
+ }
+ });
+ return filterd;
+ });
+ return (
+ <div className="p-1 gap-16">
+ <div className="text-center">タグ:{nowPageTagName} の記事一覧</div>
+ <div className="text-right">全:{loadedData.length}件</div>
+ {ArticleListElement(loadedData)}
+ </div>
+ );
+}
+export async function generateStaticParams() {
+ const tagList = await new ArticleLoader().getTagList();
+ return tagList.map((data, index) => {
+ return { tagName: data.name };
+ });
+}
diff --git a/src/app/article/tag/page.tsx b/src/app/article/tag/page.tsx
new file mode 100644
index 0000000..211ca94
--- /dev/null
+++ b/src/app/article/tag/page.tsx
@@ -0,0 +1,30 @@
+import Link from "next/link";
+import { ArticleLoader } from "../../../util/articleLoader";
+import "./style.css";
+type PageType = {
+ searchParams: Record<string, string>,
+ params: {
+ tagName: string,
+ }
+}
+export async function generateMetadata(context: PageType) {
+ return {
+ title: `アキバ総研アーカイブ:タグ一覧`,
+ }
+}
+export default async function Page(context: PageType) {
+ const tagList = await new ArticleLoader().getTagList();
+ const tagsElement: JSX.Element[] = [];
+ tagList.forEach(t => {
+ tagsElement.push(<span key={t.name}><Link href={`/article/tag/${t.name}`}>{t.name}({t.count})</Link></span>)
+ })
+ return (
+ <div className="p-8 pb-20 gap-16 sm:p-20">
+ <h1>著名なタグ一覧</h1>
+ <h1>記事にセットされているタグの一覧</h1>
+ <div className="flex gap-2 flex-wrap">
+ {tagsElement}
+ </div>
+ </div>
+ );
+}
diff --git a/src/app/article/tag/style.css b/src/app/article/tag/style.css
new file mode 100644
index 0000000..f8a5c5f
--- /dev/null
+++ b/src/app/article/tag/style.css
@@ -0,0 +1,3 @@
+h1,h2,h3 {
+ all: revert;
+}