components
<ContentDoc>
The fastest way to query and display your content.
<ContentDoc>
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 }">
<article>
<h1>{{ doc.title }}</h1>
<ContentRenderer :value="doc" />
</article>
</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>