-
Notifications
You must be signed in to change notification settings - Fork 3
/
[...slug].vue
48 lines (40 loc) · 1.13 KB
/
[...slug].vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<script setup lang="ts">
// This Nuxt page will render every Kirby page
import { getPageQuery } from '~/queries'
const { locale } = useI18n()
const route = useRoute()
// Use current slug or fall back to the homepage
const pageUri = getNonLocalizedSlug(
route.params.slug,
useKirbyStaticData().languages,
)
const { data: pageData, error: pageError } = await useKql(
getPageQuery(pageUri || 'home'),
{ language: locale.value },
)
let data = pageData.value
let fetchError = pageError.value
// If page content is empty, load the error page
if (!data?.result) {
const { data: pageData, error: pageError } = await useKql(
getPageQuery('error'),
{ language: locale.value },
)
data = pageData.value
fetchError = pageError.value
const event = useRequestEvent()
if (event) setResponseStatus(event, 404)
}
// Store page data
const page = data?.result
setPage(page)
</script>
<template>
<div>
<KirbyLayouts v-if="page?.layouts?.length" :layouts="page.layouts" />
<KirbyBlocks v-else-if="page?.blocks" :blocks="page.blocks" />
<DevOnly>
<AppDebugHelper :error="fetchError" />
</DevOnly>
</div>
</template>