diff --git a/src/runtime/plugins/documentDriven.ts b/src/runtime/plugins/documentDriven.ts index 979140e51..0930e1ba6 100644 --- a/src/runtime/plugins/documentDriven.ts +++ b/src/runtime/plugins/documentDriven.ts @@ -14,10 +14,13 @@ export default defineNuxtPlugin((nuxt) => { /** * Finds a layout value from a cascade of objects. */ - const findLayout = (page: ParsedContent, navigation: NavItem[], globals: Record) => { + const findLayout = (to: RouteLocationNormalized, page: ParsedContent, navigation: NavItem[], globals: Record) => { // Page `layout` key has priority if (page && page?.layout) { return page.layout } + // Resolve key from .vue page meta + if (to.matched.length && to.matched[0].meta?.layout) { return to.matched[0].meta.layout } + // Resolve key from navigation if (navigation && page) { const { navKeyFromPath } = useContentHelpers() @@ -197,7 +200,7 @@ export default defineNuxtPlugin((nuxt) => { } // Find used layout - const layoutName = findLayout(_page, _navigation, _globals) + const layoutName = findLayout(to, _page, _navigation, _globals) // Prefetch layout component const layout = layouts[layoutName]