・公開フラグ参照漏れの修正
・news詳細リンク生成不具合対応
This commit is contained in:
parent
ce233b2a26
commit
72ff38c274
|
|
@ -2,7 +2,7 @@ import { notFound } from "next/navigation";
|
||||||
import { getNewsById } from "@/lib/directus/news";
|
import { getNewsById } from "@/lib/directus/news";
|
||||||
import type { NewsItem } from "@/types/news";
|
import type { NewsItem } from "@/types/news";
|
||||||
import NewsDetail from "@/components/news/NewsDetail";
|
import NewsDetail from "@/components/news/NewsDetail";
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
export const revalidate = 3600;
|
export const revalidate = 3600;
|
||||||
|
|
||||||
export default async function NewsDetailPage({ params }: { params: Promise<{ id: string }> }) {
|
export default async function NewsDetailPage({ params }: { params: Promise<{ id: string }> }) {
|
||||||
|
|
|
||||||
|
|
@ -47,18 +47,27 @@ export default async function Home() {
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
// linkurl があればクリック可能に
|
// --- 事前にURL文字列を確定 ---
|
||||||
return item.linkurl ? (
|
const url = item.linkurl?.trim() ?? "";
|
||||||
|
const hasValidLink = url !== "" && url.toLowerCase() !== "none";
|
||||||
|
|
||||||
|
const href: string = hasValidLink
|
||||||
|
? /^https?:\/\//.test(url)
|
||||||
|
? url // 外部URL
|
||||||
|
: url.startsWith("/")
|
||||||
|
? url // 内部スラッグ (/page 等)
|
||||||
|
: `/news/${url}` // 相対指定は /news/配下として扱う
|
||||||
|
: `/news/${item.id}`; // 「リンクなし」時は詳細へ
|
||||||
|
|
||||||
|
return (
|
||||||
<Link
|
<Link
|
||||||
key={item.id}
|
key={item.id}
|
||||||
href={item.linkurl}
|
href={href}
|
||||||
target={item.link_target || "_self"}
|
target={item.link_target || "_self"}
|
||||||
className="block hover:bg-gray-50 rounded-md p-1"
|
className="block hover:bg-gray-50 rounded-md p-1"
|
||||||
>
|
>
|
||||||
{content}
|
{content}
|
||||||
</Link>
|
</Link>
|
||||||
) : (
|
|
||||||
<div key={item.id}>{content}</div>
|
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,44 @@ import { NewsItem } from "@/types/news";
|
||||||
* 最新ニュース5件取得
|
* 最新ニュース5件取得
|
||||||
*/
|
*/
|
||||||
export async function getLatestNews(): Promise<NewsItem[]> {
|
export async function getLatestNews(): Promise<NewsItem[]> {
|
||||||
return await directusFetch<NewsItem[]>(
|
const query = [
|
||||||
`/items/news?sort[]=-published_at&limit=5&fields[]=id&fields[]=title&fields[]=slug&fields[]=published_at&fields[]=thumbnail.id&fields[]=thumbnail.filename_disk&fields[]=linkurl&fields[]=link_target&fields[]=tags`
|
"filter[status][_eq]=1", // ✅ 公開=1 のみ取得
|
||||||
);
|
"sort[]=-published_at",
|
||||||
|
"limit=5",
|
||||||
|
"fields[]=id",
|
||||||
|
"fields[]=title",
|
||||||
|
"fields[]=slug",
|
||||||
|
"fields[]=published_at",
|
||||||
|
"fields[]=thumbnail.id",
|
||||||
|
"fields[]=thumbnail.filename_disk",
|
||||||
|
"fields[]=linkurl",
|
||||||
|
"fields[]=link_target",
|
||||||
|
"fields[]=tags",
|
||||||
|
].join("&");
|
||||||
|
|
||||||
|
return await directusFetch<NewsItem[]>(`/items/news?${query}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全ニュース一覧取得
|
* 全ニュース一覧取得
|
||||||
*/
|
*/
|
||||||
export async function getAllNews(): Promise<NewsItem[]> {
|
export async function getAllNews(): Promise<NewsItem[]> {
|
||||||
return await directusFetch<NewsItem[]>(
|
const query = [
|
||||||
`/items/news?sort[]=-published_at&fields[]=id&fields[]=title&fields[]=slug&fields[]=published_at&fields[]=thumbnail.id&fields[]=thumbnail.filename_disk&fields[]=linkurl&fields[]=link_target&fields[]=tags&fields[]=content`
|
"filter[status][_eq]=1", // ✅ 公開=1 のみ取得
|
||||||
);
|
"sort[]=-published_at",
|
||||||
|
"fields[]=id",
|
||||||
|
"fields[]=title",
|
||||||
|
"fields[]=slug",
|
||||||
|
"fields[]=published_at",
|
||||||
|
"fields[]=thumbnail.id",
|
||||||
|
"fields[]=thumbnail.filename_disk",
|
||||||
|
"fields[]=linkurl",
|
||||||
|
"fields[]=link_target",
|
||||||
|
"fields[]=tags",
|
||||||
|
"fields[]=content",
|
||||||
|
].join("&");
|
||||||
|
|
||||||
|
return await directusFetch<NewsItem[]>(`/items/news?${query}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user