Add tag pages
Tag posts in frontmatter with `tags: [go, networking]`. Then one template makes
a page for every tag in use, `tags/[tag].jsx`:
```jsx
params(() => [...new Set(pages("articles/**").flatMap(p => p.tags ?? []))].map(tag => ({ tag })));
data({ title: `Tagged “${page.params.tag}”` });
<>
{page.title}
{pages({ path: "articles/**", where: { tags: page.params.tag } }).reverse().map(p =>
- {p.title}
)}
>
```
A tag index, `tags/index.jsx`, lists the generated pages, since page bodies run
after every page exists:
```jsx
data({ title: "Tags" });
```
Link each post's tags from the post layout:
```jsx
{page.tags?.map(t => {t})}
```
To give one tag a hand-written page, add `tags/go.md`; it replaces the
generated `/tags/go` and every other tag keeps its generated page. See
[Generated pages](/docs/manual/generated-pages).