이번 업그레이드는 설정 파일을 더 잘게 나누는 작업이 아니라, 공지/알림의 중앙 통제 경로를 theme data 중심으로 다시 정리한 작업이다.
핵심 변화
themes/(0000-0000-0000-0001)/data/40-communication/announcement/_index.toml이 공지/알림의 실제 원본이 되었다.themes/(0000-0000-0000-0001)/data/40-communication/announcement/<lang>.toml에 언어별 문구, 이미지, CTA 를 분리했다.themes/(0000-0000-0000-0001)/layouts/partials/theme/announcement-config.html로 설정 계산을 분리했다.themes/(0000-0000-0000-0001)/layouts/partials/theme/announcement.html은 렌더링만 담당한다.themes/(0000-0000-0000-0001)/assets/css/core/theme-vars/80-announcement.css와themes/(0000-0000-0000-0001)/assets/css/common/announcement.css에서 디자인을 통제한다.themes/(0000-0000-0000-0001)/assets/js/04-composition-layer/cross-cutting-composition/announcement.js가 dismiss 와 상태 저장을 전담한다.- 이미지, 캡션, 링크형 미디어, CTA, 닫기, 24시간 숨기기까지 한 구조 안에 들어갔다.
itemLimit = 0이면 공지 수를 자르지 않고 모두 렌더한다.- 전역 배너는 scope 를 좁히지 않아야 진짜 전역으로 동작한다.
빠르게 확인할 페이지
이번 업그레이드에 추가된 구조
themes/
└── (0000-0000-0000-0001)/
├── assets/
│ ├── css/
│ │ ├── common/
│ │ │ └── announcement.css
│ │ └── core/
│ │ └── theme-vars/
│ │ └── 80-announcement.css
│ └── js/
│ └── common/
│ └── announcement.js
├── data/
│ ├── _index.toml
│ └── announcement/
│ ├── ko.toml
│ ├── en.toml
│ ├── jp.toml
│ └── cn.toml
└── layouts/
└── partials/
└── theme/
├── announcement-config.html
├── announcement.html
└── settings.html
최종 메모
이제부터 중요한 것은 “공지/알림을 바꾸려면 어디를 열어야 하는가"가 한눈에 보이는가다.
중앙 원본은 theme data, 렌더링은 partial, 디자인은 theme-vars, 동작은 외부 JS 라는 분리가 유지되면 확장과 운영이 모두 쉬워진다.
공지/알림 구조 메모
- 중앙 원본은
themes/(0000-0000-0000-0001)/data/40-communication/announcement/_index.toml이고, 언어별 오버라이드는themes/(0000-0000-0000-0001)/data/40-communication/announcement/<lang>.toml에 둔다. 닫기는 sessionStorage,24시간 동안 숨기기는 localStorage TTL 로 동작한다.announcementProfile = "showcase"프런트매터가 붙은 페이지에서 모달형 / 인라인 카드형 예시를 실제 렌더링으로 확인할 수 있다.- 공지/알림 디자인은 계속
themes/(0000-0000-0000-0001)/assets/css/core/design-tokens.css와theme-vars/80-announcement.css에서만 통제한다.
추가 정리
이번 추가 패스에서 한 일은 단순한 문구 수정이 아니라, 공지/알림의 운영 규칙을 더 직관적으로 바꾸는 일이었다.
priority는 작은 숫자가 먼저 보이도록 바꿨다.itemLimit는 필요한 경우에만 상위 N개를 자르는 식으로 정리했다.닫기와24시간 동안 숨기기는 서로 다른 저장 정책으로 분리했다.- 버튼 클릭은 더 직접적인 이벤트 바인딩으로 바꿔서 실제 동작 안정성을 높였다.
_index.toml과announcement/<lang>.toml은 구조와 문구의 책임을 더 분명하게 나눴다.
JS 업그레이드 추가
config/_default/params/js.toml을 새로 두어 JS 중앙 제어 경로를 문서화했다.config/_default/params.toml의[params.js]블록에서 모듈 on/off 를 한 번에 관리한다.themes/(0000-0000-0000-0001)/assets/js/04-composition-layer/cross-cutting-composition/announcement-boot.js를 추가해 새로고침 직후 깜빡임을 줄였다.themes/(0000-0000-0000-0001)/assets/js/04-composition-layer/cross-cutting-composition/navigation.js와code-copy.js로 footer inline 스크립트를 모듈화했다.themes/(0000-0000-0000-0001)/layouts/partials/head.html에서는 announcement boot 를 첫 페인트 전에 실행하도록 앞단에 배치했다.