・公開フラグ参照漏れの修正
・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 type { NewsItem } from "@/types/news";
|
||||
import NewsDetail from "@/components/news/NewsDetail";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
export const revalidate = 3600;
|
||||
|
||||
export default async function NewsDetailPage({ params }: { params: Promise<{ id: string }> }) {
|
||||
|
|
|
|||
|
|
@ -47,18 +47,27 @@ export default async function Home() {
|
|||
</div>
|
||||
);
|
||||
|
||||
// linkurl があればクリック可能に
|
||||
return item.linkurl ? (
|
||||
// --- 事前にURL文字列を確定 ---
|
||||
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
|
||||
key={item.id}
|
||||
href={item.linkurl}
|
||||
href={href}
|
||||
target={item.link_target || "_self"}
|
||||
className="block hover:bg-gray-50 rounded-md p-1"
|
||||
>
|
||||
{content}
|
||||
</Link>
|
||||
) : (
|
||||
<div key={item.id}>{content}</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -5,18 +5,44 @@ import { NewsItem } from "@/types/news";
|
|||
* 最新ニュース5件取得
|
||||
*/
|
||||
export async function getLatestNews(): Promise<NewsItem[]> {
|
||||
return await directusFetch<NewsItem[]>(
|
||||
`/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`
|
||||
);
|
||||
const query = [
|
||||
"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[]> {
|
||||
return await directusFetch<NewsItem[]>(
|
||||
`/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`
|
||||
);
|
||||
const query = [
|
||||
"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