Components
<ContentQuery>
The fastest way to query and display your content.
The <ContentQuery> is a renderless component shortening the access to queryContent().
pages/[...slug].vue
<!-- Similar to <ContentDoc :path="$route.path" /> -->
<template>
<main>
<ContentQuery :path="$route.path" find="one" v-slot="{ data }">
<ContentRenderer :value="data" />
</ContentQuery>
</main>
</template>
Props
path: The path of the content to load from content source.- Type:
string - Default:
undefined
- Type:
only: Select a subset of fields from an array of keys.- Type:
string[] - Default:
undefined
- Type:
without: Remove a subset of fields from an array of keys.- Type:
string[] - Default:
undefined
- Type:
where: Filter results with awhereclause definition.- Type:
{ [key: string]: any } - Default:
undefined
- Type:
sort: Sort results with asortclause definition.- Type:
SortParams - Default:
undefined
- Type:
limit: Limit the amount of results.- Type:
number - Default:
undefined
- Type:
skip: Skip an amount of results.- Type:
number - Default:
undefined
- Type:
locale: Filter contents based on a locale.- Type:
string - Default:
undefined
- Type:
find: The type of query to be made.- Type:
string - Values:
'one'or'surround'orundefined - Default:
.find()will be used if nothing is specified
- Type:
Slots
The default slot can be used to render the content via v-slot="{ data }" syntax.
The empty slot can be used to display a default content if the body of the document is empty.
The not-found slot can be used to display a default content before rendering the document.
Where clause
pages/about.vue
<template>
<main>
<ContentQuery path="/about/authors" :where="{ type: 'csv' }">
<template #default="{ data }">
<ul>
<li v-for="author of data" :key="author.name">
{{ author.name }}
</li>
</ul>
</template>
<template #not-found>
<p>No authors found.</p>
</template>
</ContentQuery>
</main>
</template>