50 lines
1.6 KiB
Vue
50 lines
1.6 KiB
Vue
<script setup lang="ts">
|
|
import { storeToRefs } from "pinia";
|
|
import { usePageDataStore } from "#layers/stores/usePageDataStore";
|
|
import Section from "#layers/components/molecules/Section.vue";
|
|
|
|
const pageDataStore = usePageDataStore();
|
|
const { pageData } = storeToRefs(pageDataStore);
|
|
|
|
// 동적 i18n 라우트 설정
|
|
// const { getI18nRouteConfig } = useDynamicI18nRoutes();
|
|
|
|
// const layout = pageData.value?.meta?.layout ?? "default";
|
|
const layout = "default"; // 기본 레이아웃 사용
|
|
|
|
// definePageMeta를 사용하여 레이아웃을 미리 설정
|
|
definePageMeta({
|
|
layout: false, // 기본 레이아웃 비활성화
|
|
});
|
|
|
|
// // gameData.lang_codes를 기반으로 동적 언어 제외 설정
|
|
// const i18nRouteConfig = getI18nRouteConfig();
|
|
// if (i18nRouteConfig) {
|
|
// defineI18nRoute(i18nRouteConfig);
|
|
// }
|
|
|
|
// SEO 메타 태그 설정 - pageData가 로드된 후에만 실행
|
|
watchEffect(() => {
|
|
if (pageData.value?.meta_tag) {
|
|
useSeoMeta({
|
|
title: pageData.value.meta_tag.page_title ?? "",
|
|
description: pageData.value.meta_tag.page_desc ?? "",
|
|
ogTitle: pageData.value.meta_tag.og_title ?? "",
|
|
ogDescription: pageData.value.meta_tag.og_desc ?? "",
|
|
ogImage: pageData.value.meta_tag.og_image ?? "",
|
|
twitterTitle: pageData.value.meta_tag.x_title ?? "",
|
|
twitterImage: pageData.value.meta_tag.x_image ?? "",
|
|
twitterDescription: pageData.value.meta_tag.x_desc ?? "",
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<NuxtLayout :name="layout">
|
|
<ClientOnly>
|
|
<Section :templates="pageData?.templates ?? []" />
|
|
</ClientOnly>
|
|
</NuxtLayout>
|
|
</template>
|