meta 정리
This commit is contained in:
+8
-1
@@ -4,7 +4,14 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<link rel="icon" href="/favicon.ico">
|
<link rel="icon" href="/favicon.ico">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>LaneBow - 볼링 클럽 매니저</title>
|
<meta name="description" content="볼링 클럽 관리 프로그램으로 회원 관리, 경기 일정, 점수 기록, 통계 분석 등 클럽 운영을 쉽고 효율적으로 관리하세요.">
|
||||||
|
<meta name="keywords" content="볼링 클럽 매니저, 레인보우, 볼링클럽, 볼링동호회">
|
||||||
|
<meta property="og:title" content="LaneBow-레인보우">
|
||||||
|
<meta property="og:description" content="볼링 클럽 관리 프로그램으로 회원 관리, 경기 일정, 점수 기록, 통계 분석 등 클럽 운영을 쉽고 효율적으로 관리하세요.">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:url" content="https://lanebow.com">
|
||||||
|
<meta property="og:image" content="/LaneBowLogo.png">
|
||||||
|
<title>LaneBow-레인보우</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
Generated
+119
@@ -18,6 +18,7 @@
|
|||||||
"@tosspayments/payment-sdk": "^1.9.1",
|
"@tosspayments/payment-sdk": "^1.9.1",
|
||||||
"@vuelidate/core": "^2.0.3",
|
"@vuelidate/core": "^2.0.3",
|
||||||
"@vuelidate/validators": "^2.0.4",
|
"@vuelidate/validators": "^2.0.4",
|
||||||
|
"@vueuse/head": "^2.0.0",
|
||||||
"axios": "^1.8.2",
|
"axios": "^1.8.2",
|
||||||
"chart.js": "^4.4.8",
|
"chart.js": "^4.4.8",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
@@ -1507,6 +1508,76 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@unhead/dom": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-jgfGYdOH+xHJF/j8gudjsYu3oIjFyXhCWcgKaw3vQnT616gSqyqnGQGOItL+BQtQZACKNISwIfx5PuOtztMKLA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/schema": "1.11.20",
|
||||||
|
"@unhead/shared": "1.11.20"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@unhead/schema": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-0zWykKAaJdm+/Y7yi/Yds20PrUK7XabLe9c3IRcjnwYmSWY6z0Cr19VIs3ozCj8P+GhR+/TI2mwtGlueCEYouA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"hookable": "^5.5.3",
|
||||||
|
"zhead": "^2.2.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@unhead/shared": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-1MOrBkGgkUXS+sOKz/DBh4U20DNoITlJwpmvSInxEUNhghSNb56S0RnaHRq0iHkhrO/cDgz2zvfdlRpoPLGI3w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/schema": "1.11.20",
|
||||||
|
"packrup": "^0.1.2"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@unhead/ssr": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-j6ehzmdWGAvv0TEZyLE3WBnG1ULnsbKQcLqBDh3fvKS6b3xutcVZB7mjvrVE7ckSZt6WwOtG0ED3NJDS7IjzBA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/schema": "1.11.20",
|
||||||
|
"@unhead/shared": "1.11.20"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@unhead/vue": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-sqQaLbwqY9TvLEGeq8Fd7+F2TIuV3nZ5ihVISHjWpAM3y7DwNWRU7NmT9+yYT+2/jw1Vjwdkv5/HvDnvCLrgmg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/schema": "1.11.20",
|
||||||
|
"@unhead/shared": "1.11.20",
|
||||||
|
"hookable": "^5.5.3",
|
||||||
|
"unhead": "1.11.20"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": ">=2.7 || >=3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@vitejs/plugin-vue": {
|
"node_modules/@vitejs/plugin-vue": {
|
||||||
"version": "5.2.3",
|
"version": "5.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz",
|
||||||
@@ -1829,6 +1900,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@vueuse/head": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vueuse/head/-/head-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-ykdOxTGs95xjD4WXE4na/umxZea2Itl0GWBILas+O4oqS7eXIods38INvk3XkJKjqMdWPcpCyLX/DioLQxU1KA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/dom": "^1.7.0",
|
||||||
|
"@unhead/schema": "^1.7.0",
|
||||||
|
"@unhead/ssr": "^1.7.0",
|
||||||
|
"@unhead/vue": "^1.7.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": ">=2.7 || >=3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/adler-32": {
|
"node_modules/adler-32": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz",
|
||||||
@@ -2901,6 +2987,15 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/packrup": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/packrup/-/packrup-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/parse-ms": {
|
"node_modules/parse-ms": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
|
||||||
@@ -3342,6 +3437,21 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/unhead": {
|
||||||
|
"version": "1.11.20",
|
||||||
|
"resolved": "https://registry.npmjs.org/unhead/-/unhead-1.11.20.tgz",
|
||||||
|
"integrity": "sha512-3AsNQC0pjwlLqEYHLjtichGWankK8yqmocReITecmpB1H0aOabeESueyy+8X1gyJx4ftZVwo9hqQ4O3fPWffCA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@unhead/dom": "1.11.20",
|
||||||
|
"@unhead/schema": "1.11.20",
|
||||||
|
"@unhead/shared": "1.11.20",
|
||||||
|
"hookable": "^5.5.3"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/unicorn-magic": {
|
"node_modules/unicorn-magic": {
|
||||||
"version": "0.3.0",
|
"version": "0.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
|
||||||
@@ -3792,6 +3902,15 @@
|
|||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/zhead": {
|
||||||
|
"version": "2.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz",
|
||||||
|
"integrity": "sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==",
|
||||||
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/harlan-zw"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
"@tosspayments/payment-sdk": "^1.9.1",
|
"@tosspayments/payment-sdk": "^1.9.1",
|
||||||
"@vuelidate/core": "^2.0.3",
|
"@vuelidate/core": "^2.0.3",
|
||||||
"@vuelidate/validators": "^2.0.4",
|
"@vuelidate/validators": "^2.0.4",
|
||||||
|
"@vueuse/head": "^2.0.0",
|
||||||
"axios": "^1.8.2",
|
"axios": "^1.8.2",
|
||||||
"chart.js": "^4.4.8",
|
"chart.js": "^4.4.8",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
|||||||
@@ -59,10 +59,11 @@ import TabPanel from 'primevue/tabpanel';
|
|||||||
import TabList from 'primevue/tablist';
|
import TabList from 'primevue/tablist';
|
||||||
import Tab from 'primevue/tab';
|
import Tab from 'primevue/tab';
|
||||||
import {ko} from 'primelocale/js/ko.js';
|
import {ko} from 'primelocale/js/ko.js';
|
||||||
|
import { createHead } from '@vueuse/head'
|
||||||
import AppHeader from './components/AppHeader.vue';
|
import AppHeader from './components/AppHeader.vue';
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
|
const head = createHead()
|
||||||
|
app.use(head)
|
||||||
// Register PrimeVue
|
// Register PrimeVue
|
||||||
app.use(PrimeVue, {
|
app.use(PrimeVue, {
|
||||||
theme: {
|
theme: {
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ import MemberListCard from '@/components/public/MemberListCard.vue';
|
|||||||
import JoinDialog from '@/components/public/JoinDialog.vue';
|
import JoinDialog from '@/components/public/JoinDialog.vue';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import PublicEventService from '@/services/PublicEventService';
|
import PublicEventService from '@/services/PublicEventService';
|
||||||
import Panel from 'primevue/panel';
|
import { useHead } from '@vueuse/head';
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const publicHash = route.params.publicHash;
|
const publicHash = route.params.publicHash;
|
||||||
@@ -282,6 +282,32 @@ const isReady = computed(() => event.value.status === 'ready');
|
|||||||
const isActive = computed(() => event.value.status === 'active');
|
const isActive = computed(() => event.value.status === 'active');
|
||||||
const isFinished = computed(() => event.value.status === 'completed');
|
const isFinished = computed(() => event.value.status === 'completed');
|
||||||
|
|
||||||
|
// description만 이벤트 정보로 동적으로 설정
|
||||||
|
const eventDescriptionText = computed(() => {
|
||||||
|
const e = event.value || {};
|
||||||
|
let summary = '';
|
||||||
|
if (e.startDate) {
|
||||||
|
summary += `[기간] ${formatDate(e.startDate)}`;
|
||||||
|
if (e.endDate) summary += ` ~ ${formatDate(e.endDate)}`;
|
||||||
|
summary += '.\n';
|
||||||
|
}
|
||||||
|
if (e.description) summary += `[이벤트 내용] ${e.description}`;
|
||||||
|
if (e.location) summary += `[장소] ${e.location}.\n`;
|
||||||
|
if (e.registrationDeadline) summary += `[신청마감] ${formatDate(e.registrationDeadline)}.\n`;
|
||||||
|
if (e.maxParticipants) summary += `[참가인원] ${e.maxParticipants}명\n`;
|
||||||
|
|
||||||
|
return summary || '이벤트 정보가 없습니다.';
|
||||||
|
});
|
||||||
|
|
||||||
|
useHead({
|
||||||
|
meta: [
|
||||||
|
{ title: event.value.title },
|
||||||
|
{ property: 'og:title', content: event.value.title },
|
||||||
|
{ name: 'description', content: eventDescriptionText },
|
||||||
|
{ property: 'og:description', content: eventDescriptionText }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
// 신청 마감일시 체크
|
// 신청 마감일시 체크
|
||||||
const isRegistrationClosed = computed(() => {
|
const isRegistrationClosed = computed(() => {
|
||||||
if (!event.value.registrationDeadline) return false;
|
if (!event.value.registrationDeadline) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user