From d5e7c16239fb02ecf2a7c361c4f02bd001301716 Mon Sep 17 00:00:00 2001 From: kyounggu Date: Tue, 20 Oct 2026 13:31:15 +0900 Subject: [PATCH] =?UTF-8?q?tamplate=20=EC=B9=98=ED=99=98=20=ED=82=A4?= =?UTF-8?q?=EC=9B=8C=EB=93=9C=20=EC=8A=A4=ED=84=B0=ED=95=91=20=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EB=B0=8F=20=EC=98=A4=ED=83=80=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- busan/components/FastConsultFocus.vue | 6 +- busan/components/InternalLinkHub.vue | 237 +++ busan/components/NearbySchools.vue | 36 +- busan/components/SubjectCarousel.vue | 22 +- busan/pages/[...slug].vue | 16 +- busan/public/rss.xml | 4 +- busan/public/sitemap.xml | 504 ++--- busan/utils/seoHelper.ts | 65 +- daegu/components/FastConsultFocus.vue | 6 +- daegu/components/InternalLinkHub.vue | 237 +++ daegu/components/NearbySchools.vue | 36 +- daegu/components/SubjectCarousel.vue | 22 +- daegu/pages/[...slug].vue | 16 +- daegu/public/rss.xml | 4 +- daegu/public/sitemap.xml | 444 ++--- daegu/utils/seoHelper.ts | 65 +- gwangju/components/FastConsultFocus.vue | 6 +- gwangju/components/InternalLinkHub.vue | 237 +++ gwangju/components/NearbySchools.vue | 36 +- gwangju/components/SubjectCarousel.vue | 22 +- gwangju/pages/[...slug].vue | 16 +- gwangju/public/rss.xml | 4 +- gwangju/public/sitemap.xml | 324 ++-- gwangju/utils/seoHelper.ts | 65 +- gyeonggi/components/FastConsultFocus.vue | 6 +- gyeonggi/components/InternalLinkHub.vue | 237 +++ gyeonggi/components/NearbySchools.vue | 60 +- gyeonggi/components/SubjectCarousel.vue | 22 +- gyeonggi/pages/[...slug].vue | 16 +- gyeonggi/public/rss.xml | 8 +- gyeonggi/public/sitemap.xml | 2220 +++++++++++----------- gyeonggi/utils/seoHelper.ts | 65 +- incheon/components/FastConsultFocus.vue | 6 +- incheon/components/InternalLinkHub.vue | 237 +++ incheon/components/NearbySchools.vue | 36 +- incheon/components/SubjectCarousel.vue | 22 +- incheon/pages/[...slug].vue | 16 +- incheon/public/rss.xml | 4 +- incheon/public/sitemap.xml | 426 ++--- incheon/utils/seoHelper.ts | 65 +- seoul/components/FastConsultFocus.vue | 6 +- seoul/components/InternalLinkHub.vue | 237 +++ seoul/components/NearbySchools.vue | 36 +- seoul/components/SubjectCarousel.vue | 22 +- seoul/pages/[...slug].vue | 7 + seoul/public/rss.xml | 12 +- seoul/public/sitemap.xml | 1164 ++++++------ seoul/utils/seoHelper.ts | 63 +- site1/components/FastConsultFocus.vue | 6 +- site1/components/InternalLinkHub.vue | 237 +++ site1/components/NearbySchools.vue | 36 +- site1/components/SubjectCarousel.vue | 22 +- site1/pages/[...slug].vue | 16 +- site1/public/sitemap.xml | 1164 ++++++------ site1/utils/seoHelper.ts | 65 +- ulsan/components/FastConsultFocus.vue | 6 +- ulsan/components/InternalLinkHub.vue | 237 +++ ulsan/components/NearbySchools.vue | 36 +- ulsan/components/SubjectCarousel.vue | 22 +- ulsan/pages/[...slug].vue | 16 +- ulsan/public/rss.xml | 4 +- ulsan/public/sitemap.xml | 276 +-- ulsan/utils/seoHelper.ts | 65 +- 63 files changed, 6181 insertions(+), 3450 deletions(-) create mode 100644 busan/components/InternalLinkHub.vue create mode 100644 daegu/components/InternalLinkHub.vue create mode 100644 gwangju/components/InternalLinkHub.vue create mode 100644 gyeonggi/components/InternalLinkHub.vue create mode 100644 incheon/components/InternalLinkHub.vue create mode 100644 seoul/components/InternalLinkHub.vue create mode 100644 site1/components/InternalLinkHub.vue create mode 100644 ulsan/components/InternalLinkHub.vue diff --git a/busan/components/FastConsultFocus.vue b/busan/components/FastConsultFocus.vue index a6c64a9..cbfc315 100644 --- a/busan/components/FastConsultFocus.vue +++ b/busan/components/FastConsultFocus.vue @@ -19,12 +19,12 @@ :key="idx" href="#consult-section" class="focus-card" - :title="`${regionDong} ${item.title} 상담 신청`" + :title="`${item.title} 상담 신청`" >
{ { tag: '밀착 피드백', title: `${dong}초등 ${sub}과외 - 숙제검사`, - desc: '매일 1:1 오답 점검과 꼼꼼한 피드백 피드백', + desc: '매일 1:1 오답 점검과 꼼꼼한 피드백 클리닉', image: '/images/focus/elem-3-homework.svg' }, { diff --git a/busan/components/InternalLinkHub.vue b/busan/components/InternalLinkHub.vue new file mode 100644 index 0000000..3d32d91 --- /dev/null +++ b/busan/components/InternalLinkHub.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/busan/components/NearbySchools.vue b/busan/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/busan/components/NearbySchools.vue +++ b/busan/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/daegu/components/NearbySchools.vue b/daegu/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/daegu/components/NearbySchools.vue +++ b/daegu/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/gwangju/components/NearbySchools.vue b/gwangju/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/gwangju/components/NearbySchools.vue +++ b/gwangju/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/gyeonggi/components/NearbySchools.vue b/gyeonggi/components/NearbySchools.vue index ed62423..e884e05 100644 --- a/gyeonggi/components/NearbySchools.vue +++ b/gyeonggi/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -116,7 +116,6 @@ diff --git a/incheon/components/NearbySchools.vue b/incheon/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/incheon/components/NearbySchools.vue +++ b/incheon/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/seoul/components/NearbySchools.vue b/seoul/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/seoul/components/NearbySchools.vue +++ b/seoul/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/site1/components/NearbySchools.vue b/site1/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/site1/components/NearbySchools.vue +++ b/site1/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +}) diff --git a/ulsan/components/NearbySchools.vue b/ulsan/components/NearbySchools.vue index a661e59..e884e05 100644 --- a/ulsan/components/NearbySchools.vue +++ b/ulsan/components/NearbySchools.vue @@ -8,18 +8,18 @@

- -
+ +
- {{ regionDong }} 인근 주요 고등학교 내신 대비 현황 + {{ regionDong }} 인근 주요 {{ targetSchoolType }} 내신 대비 현황 NEIS 학교정보 연동
@@ -172,6 +172,34 @@ const nearbyHighSchools = computed(() => { } return [] }) + +// 학년에 맞춘 학교 목록 (중학생인 경우 중학교 명칭 자동 매칭 및 보완) +const displaySchools = computed(() => { + const highList = nearbyHighSchools.value + if (isMiddle.value) { + const middleList = [] + const cleanDong = (props.regionDong || '').replace(/(동|읍|면|리)$/, '') + if (cleanDong) { + middleList.push({ + code: 'mid-dong-1', + name: `${cleanDong}중학교`, + type: '공립' + }) + } + highList.forEach((sch, idx) => { + const midName = sch.name.replace(/여자고등학교$/, '여자중학교').replace(/고등학교$/, '중학교') + if (!middleList.some(m => m.name === midName)) { + middleList.push({ + code: `mid-${sch.code || idx}`, + name: midName, + type: sch.foundation ? `${sch.foundation}` : '중학' + }) + } + }) + return middleList.slice(0, 8) + } + return highList +})