<ContentDoc>
The fastest way to query and display your content.
The <ContentDoc> component fetches and renders a single document.
An explicit path can be passed to the component with the path prop. If not provided, the $route.path will be used.
It uses <ContentRenderer> and <ContentQuery> under the hood.
Props
tag: The tag to use for the renderer element (if no default slot is provided).- Type:
String - Default:
'div'
- Type:
path: The path of the content to load from content source.- Type:
String - Default:
$route.path
- Type:
excerpt: Whether or not to render the excerpt.- Type:
Boolean - Default:
false
- Type:
query: A query to be passed toqueryContent().- Type:
QueryBuilderParams - Default:
undefined
- Type:
head: Toggles the usage ofuseContentHead.- Type:
Boolean - Default:
true
- Type:
Slots
The default slot can be used to render the content via v-slot="{ data }" syntax:
pages/dataviz.vue
<template> <main> <ContentDoc v-slot="{ doc }"> <h1>{{ doc.title }}</h1> <ContentRenderer :value="doc" /> </ContentDoc> </main></template>The not-found slot can be used when no document is found:
pages/dataviz.vue
<template> <main> <ContentDoc> <template #not-found> <h1>Document not found</h1> </template> </ContentDoc> </main></template>The empty slot can be used to display a default content before rendering the document.
pages/dataviz.vue
<template> <main> <ContentDoc> <template #empty> <h1>Document is empty</h1> </template> </ContentDoc> </main></template>Examples
Default
pages/[...slug.vue]
<template> <main> <!-- Similar to <ContentDoc :path="$route.path" /> --> <ContentDoc /> </main></template>Explicit path
app.vue
<template> <main> <ContentDoc path="/about" /> </main></template>Table of Contents