이번 업그레이드는 설정 파일을 더 잘게 나누는 작업이 아니라, 공지/알림의 중앙 통제 경로를 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.cssthemes/(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.csstheme-vars/80-announcement.css 에서만 통제한다.

추가 정리

이번 추가 패스에서 한 일은 단순한 문구 수정이 아니라, 공지/알림의 운영 규칙을 더 직관적으로 바꾸는 일이었다.

  • priority 는 작은 숫자가 먼저 보이도록 바꿨다.
  • itemLimit 는 필요한 경우에만 상위 N개를 자르는 식으로 정리했다.
  • 닫기24시간 동안 숨기기 는 서로 다른 저장 정책으로 분리했다.
  • 버튼 클릭은 더 직접적인 이벤트 바인딩으로 바꿔서 실제 동작 안정성을 높였다.
  • _index.tomlannouncement/<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.jscode-copy.js 로 footer inline 스크립트를 모듈화했다.
  • themes/(0000-0000-0000-0001)/layouts/partials/head.html 에서는 announcement boot 를 첫 페인트 전에 실행하도록 앞단에 배치했다.