테마 개발자가 사이트의 경험을 제어할 수 있는 새로운 방법을 추가했습니다. 테마 설정 가능한 사이트 설정(Themeable site settings)을 사용하면 테마가 Discourse 코어에서 정의한 제한적인 사이트 설정 그룹을 오버라이드할 수 있습니다. ![]()
테마 설정 가능한 사이트 설정은 어떻게 다른가요?
이미 테마 설정과 테마 수정자(Theme modifiers)라는 개념이 있으므로, 테마 설정 가능한 사이트 설정은 어떻게 다른지 궁금하실 수 있습니다. 간단히 요약하면 다음과 같습니다:
- 테마 설정 (Theme settings) - 테마 또는 컴포넌트 내에서 UI와 기능을 제어하고 구성 옵션을 제공하기 위해 사용되는 사용자 정의 설정입니다. 이는 코어 Discourse 기능을 변경할 수 없습니다.
- 테마 수정자 (Theme modifiers) - 플러그인을 구축하는 대안으로, 테마나 컴포넌트가 코어 Discourse의 선택된 서버 측 기능을 수정할 수 있게 합니다.
테마 설정 가능한 사이트 설정 (Themeable site settings, 신규) - 테마(컴포넌트는 불가)가 일반적으로 UI의 일부와 기타 사소한 기능을 제어하는 코어 사이트 설정의 작은 하위 집합을 오버라이드할 수 있게 합니다. 이를 통해 테마가 전체 사이트 경험에 대해 더 큰 제어를 가질 수 있습니다.
테마 설정 가능한 사이트 설정은 오버라이드하는 사이트 설정과 동일한 데이터 유형과 값을 가집니다. 모든 목적을 위해, 각 테마가 이제 이 값을 개별적으로 제어하므로 데이터베이스의 사이트 설정 값은 사실상 무의미해집니다.
관리자가 테마 설정 가능한 사이트 설정을 어떻게 보고 변경할 수 있나요?
관리자는 두 가지 곳에서 테마 설정 가능한 사이트 설정을 보고 변경할 수 있습니다. 첫째, 각 개별 테마 페이지에는 테마가 정의한 테마 설정을 표시하는 다른 섹션 위에 다음과 같은 “테마가 오버라이드할 수 있는 설정” 섹션이 이제 있습니다:
점(dot)은 해당 값이 사이트 설정의 기본값에서 변경되었음을 나타냅니다. "초기화(reset)"를 누르면 테마 사이트 설정 값이 사이트 설정의 기본값과 일치하도록 변경됩니다.
관리자가 이 설정을 볼 수 있는 두 번째 곳은 새로운 페이지인 /admin/config/theme-site-settings입니다:
여기서 관리자는 모든 테마 설정 가능한 사이트 설정, 기본 사이트 설정 값, 그리고 이 값을 오버라이드하는 테마를 확인할 수 있습니다. 테마 이름에 마우스를 올리면 UI가 해당 테마가 설정한 값을 표시합니다.
기존 사이트 설정 변경 사항에 어떤 일이 발생하나요?
사이트에서 enable_welcome_banner 또는 search_experience를 기본값에서 변경했다면, 사이트에서 설치된 모든 테마로 이 값이 자동으로 마이그레이션되므로 회원들의 UI에서 아무것도 변경되지 않습니다.
어디서 정의되나요?
테마 설정 가능한 사이트 설정은 코어의 config/site_settings.yml 파일에서 정의됩니다. 각 테마 설정 가능한 사이트 설정에는 themeable: true 옵션이 정의되어 있습니다.
현재로서는 enable_welcome_banner와 search_experience 두 가지 사이트 설정만 테마 설정 가능하지만, 향후 더 많은 사이트 설정을 테마 설정 가능하도록 할 가능성이 높습니다.
테마 작성자가 기본 값을 어떻게 제어할 수 있나요?
테마 작성자는 about.json 파일의 theme_site_settings 키 아래에서 다음과 같이 테마 사이트 설정 오버라이드를 정의할 수 있습니다:
"theme_site_settings": {
"enable_welcome_banner": false
}
여기서의 모든 값은 데이터베이스에 저장되고 테마와 연관됩니다. 한 번 값이 저장되면, 테마가 업데이트될 때 about.json 파일의 theme_site_settings에 대한 변경 사항은 현재 저장된 데이터베이스 값에 영향을 주지 않습니다. 이는 관리자가 그 사이에 설정을 변경했는지 알 수 없기 때문입니다.
테마 설정 가능한 사이트 설정의 제한 사항은 무엇인가요?
테마 설정 가능한 사이트 설정은 주로 UI 요소를 제어하는 데 의도되어 있으며, 값을 가져올 때 테마 ID가 필요하므로 다음 제한 사항이 적용됩니다:
- 테마 설정 가능한 사이트 설정은 Sidekiq 작업에서 사용할 수 없습니다.
- 테마 설정 가능한 사이트 설정은 마크다운 규칙에서 사용할 수 없습니다.
- 테마 설정 가능한 사이트 설정은 테마 ID를 키로 사용하여 클라이언트 사이트 설정과 별도로 캐시됩니다.
- 테마 설정 가능한 사이트 설정은 애플리케이션 프리로더를 사용하여 클라이언트의
siteSettings서비스에서 키를 오버라이드합니다. SiteSetting.client_settings_json에는 테마 설정 가능한 사이트 설정이 포함되지 않으며, 대신 테마 ID를 인수로SiteSetting.theme_site_settings_json을 호출할 수 있습니다.
일반적으로, 테마 사이트 설정은 UI의 일부를 제어하는 단순한 설정에만 사용되며, 서버 측 기능에는 사용되지 않습니다.

