feat: Initial useNodeByUri
All checks were successful
Deploy WordPress and Nuxt / deploy (push) Successful in 59s

This commit is contained in:
2025-09-03 14:45:31 -04:00
parent b15beb961e
commit 7558da689d
6 changed files with 49 additions and 9 deletions

View File

@@ -0,0 +1,3 @@
fragment ThePage on Page {
title
}

View File

@@ -0,0 +1,11 @@
<script setup lang="ts">
import type { ThePageFragment } from "#graphql-operations";
defineProps<{ node: ThePageFragment }>();
</script>
<template>
<UPage>
<UPageSection v-if="node.title" :title="node.title" />
</UPage>
</template>

View File

@@ -0,0 +1,9 @@
query nodeByUri($uri: String!) {
nodeByUri(uri: $uri) {
__typename
id
... on Page {
...ThePage
}
}
}

View File

@@ -0,0 +1,18 @@
import type { ThePageFragment } from "#graphql-operations";
import { ThePage } from "#components";
export async function useNodeByUri() {
const route = useRoute();
const uri = computed(() => route.path);
const { data } = await useAsyncGraphqlQuery("nodeByUri", { uri: uri.value }, { graphqlCaching: { client: true } });
if (data.value?.errors?.length) {
throw createError({ statusCode: 500, message: "Erreur lors de la récupération du contenu", fatal: true });
}
const node = data.value?.data.nodeByUri;
switch (node?.__typename) {
case "Page":
return { component: ThePage, node: node as ThePageFragment };
default:
throw createError({ statusCode: 404, message: "Page non trouvée", fatal: true });
}
}

View File

@@ -0,0 +1,8 @@
<script setup lang="ts">
const { node, component } = await useNodeByUri();
useSeoMeta({ title: node?.title });
</script>
<template>
<component :is="component" :node="node" />
</template>

View File

@@ -1,9 +0,0 @@
<script setup lang="ts">
useSeoMeta({ title: "Accueil" });
</script>
<template>
<UPage>
<UPageHero title="Nuxt UI rocks" />
</UPage>
</template>