pbc-local 项目封面图不显示——模板未渲染 cover 字段
项目档案 md 里写了 cover 字段、图片也放进 public/images/projects/,但详情页和列表卡片都不显示封面——原因:自定义模板 [slug].astro 与 ProjectCard.astro 根本没渲染 cover。加 img 标签即可,无需改数据。
- AstroWind
- 模板
- cover
背景
给项目档案加封面配图(1200×630 jpg,放 public/images/projects/{slug}-cover.jpg,frontmatter cover: /images/projects/{slug}-cover.jpg)。build 后 curl 详情页 200、图片文件也在 dist 里,但页面 HTML 无任何 <img> / cover 引用。
根因
pbc-local 用的是自定义精简模板(非 AstroWind 原版项目卡片):
src/pages/projects/[slug].astro:只解构渲染 title/status/tags/year/goal/concept/process/problems/outcomes/links/output,未解构 coversrc/components/custom/ProjectCard.astro:同样只渲染文字摘要,无封面
schema 允许 cover(content collection 校验通过),但模板层没画它。
修复(最小改动,仅加 img)
详情页 [slug].astro:
const { cover } = project.data;
// header 内、标题下方:
{cover && <img src={cover} alt={title} width={1200} height={630} class="mt-6 w-full rounded-xl border ..." />}列表卡片 ProjectCard.astro:
const { cover } = project.data;
// 状态行下方:
{cover && (
<div class="mb-4 overflow-hidden rounded-xl border ...">
<img src={cover} alt={title} width={1200} height={630} class="aspect-[16/9] w-full object-cover" />
</div>
)}重跑 build 后验证:详情页 HTML 出现 <img ... src="/images/projects/dsh-consultation-cover.jpg">,列表页卡片也带图。
要点
- public/ 下的图片会被 Astro 原样复制到 dist(
dist/images/projects/*.jpg),无需 import - 字段写对但页面不显示 → 先查模板是否解构/渲染该字段,再查数据
- 无封面图的项目不受影响(
{cover && ...}条件渲染)