Using Astro Content Collections
3 min read
Getting Content Headings from Astro Content Collections
It seems the Astro Content Collections Docs haven’t been updated for this yet, and it took me a bit of time to find this, so I hope this helps someone out there.
The headings
object is returned from Astro post.render()
;
const post = await Astro.props;
const { Content, headings } = await post.render();
headings
Object Variables
beeteedubs:
`code` works on `###` headings in mdx.
slug
is just the slug, so you will need to add a #
.
depth
is the heading depth, ex: <h2></h2>
=== depth:2
.
---
const { headings } = Astro.props;
---
<ul class='menu' data-toc-list>
{
headings.map((h) => {
if (h.depth < 4)
return (
<li>
<a class={`h-depth--${h.depth}`} href={`#${h.slug}`}>
{h.text}
</a>
</li>
);
})
}
</ul>