테마 설정 가능한 사이트 설정이 이제 사용 가능합니다

테마 개발자가 사이트의 경험을 제어할 수 있는 새로운 방법을 추가했습니다. 테마 설정 가능한 사이트 설정(Themeable site settings)을 사용하면 테마가 Discourse 코어에서 정의한 제한적인 사이트 설정 그룹을 오버라이드할 수 있습니다. :gear:

테마 설정 가능한 사이트 설정은 어떻게 다른가요?

이미 테마 설정테마 수정자(Theme modifiers)라는 개념이 있으므로, 테마 설정 가능한 사이트 설정은 어떻게 다른지 궁금하실 수 있습니다. 간단히 요약하면 다음과 같습니다:

  • 테마 설정 (Theme settings) - 테마 또는 컴포넌트 내에서 UI와 기능을 제어하고 구성 옵션을 제공하기 위해 사용되는 사용자 정의 설정입니다. 이는 코어 Discourse 기능을 변경할 수 없습니다.
  • 테마 수정자 (Theme modifiers) - 플러그인을 구축하는 대안으로, 테마나 컴포넌트가 코어 Discourse의 선택된 서버 측 기능을 수정할 수 있게 합니다.
  • :sparkles: 테마 설정 가능한 사이트 설정 (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_bannersearch_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의 일부를 제어하는 단순한 설정에만 사용되며, 서버 측 기능에는 사용되지 않습니다.

34개의 좋아요

Thanks a lot for this update! It’s a great help!

7개의 좋아요

What happens if I change enable_welcome_banner later, i.e. after this migration has happened? Will I need to adjust each theme accordingly?

4개의 좋아요

Yes, you cannot change these site settings directly anymore, they will only show in each individual theme’s Edit page.

2개의 좋아요

Should the Welcome banner location setting also be included?

3개의 좋아요

Are themable site settings also able to include site settings for assets such as logo onebox images?

3개의 좋아요

A quick update here – themeable site settings will now show when searching “All settings” to make them a bit easier to discover:

4개의 좋아요