사이트 코드와 홈페이지 위젯 추가 v1.5.34

This commit is contained in:
2026-06-02 14:21:47 +09:00
parent 600b0fd1d9
commit 5b78a8c92f
21 changed files with 618 additions and 39 deletions

View File

@@ -0,0 +1,47 @@
import { getSiteSettings } from '../repositories/content-repository'
/**
* 공통 코드 삽입을 건너뛸 서버 경로인지 확인한다.
* @param {import('h3').H3Event} event - 요청 이벤트
* @returns {boolean} 삽입 제외 여부
*/
const shouldSkipCustomCode = (event) => {
const path = String(event?.path || event?.node?.req?.url || '/')
return path.startsWith('/admin')
|| path.startsWith('/api')
|| path.startsWith('/uploads')
|| path.startsWith('/_nuxt')
|| path.startsWith('/ads.txt')
}
/**
* HTML 조각을 응답 배열에 안전하게 추가한다.
* @param {Array<string>} target - Nitro HTML 조각 배열
* @param {string} code - 삽입할 HTML 코드
* @returns {void}
*/
const pushHtmlCode = (target, code) => {
const trimmed = String(code || '').trim()
if (!trimmed || !Array.isArray(target)) {
return
}
target.push(trimmed)
}
/**
* 공개 HTML 응답에 관리자 설정의 헤더·푸터 코드를 삽입한다.
*/
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook('render:html', async (html, { event }) => {
if (shouldSkipCustomCode(event)) {
return
}
const settings = await getSiteSettings()
pushHtmlCode(html.head, settings.customHeadCode)
pushHtmlCode(html.bodyAppend, settings.customFooterCode)
})
})