테마의 기능이 점점 더 복잡해짐에 따라, 코어 서버 사이드 동작을 조작할 수 있는 방법을 모색해 왔습니다. 플러그인만큼의 제어 권한은 부여되지 않지만, 테마가 조작할 수 있는 몇 가지 사전 정의된 훅을 제공할 수 있습니다.
소개합니다: 테마 수정자 (theme modifiers) ![]()
이들은 테마의 about.json 파일에서 modifiers 키를 사용하여 지정됩니다.
100% 최신 수정자 목록은 theme_modifier_set.rb 하단의 데이터베이스 스키마를 확인하세요. 현재까지 제공되는 수정자의 빠른 요약은 다음과 같습니다:
-
serialize_topic_excerptsboolean (기본값 false) - 주제 목록을 직렬화할 때 항상 발췌문을 포함합니다 -
csp_extensionsstring array - CSP에 지시문을 추가합니다. 이전의 “extend_content_security_policy” 테마 설정 방법과 동일하게 작동합니다. 하지만 기억하세요, 단순한<script src="">태그는 자동으로 허용됩니다. -
svg_iconsstring array - 아이콘 하위 집합에 포함되어야 할 아이콘 목록 -
topic thumbnailsarray of dimensions - 주제 섬네일 세트에서 추가 해상도를 요청합니다. 비동기로 생성되므로, 요청한 크기가 제공되지 않으면 원래 이미지로 폴백해야 합니다. 자세한 정보는 커밋 메시지에서 확인할 수 있습니다. -
serialize_post_user_badgesstring array - 게시글 데이터와 함께 직렬화할 배지 이름 목록(배지 테이블의 항목과 일치해야 함). 설정되면 시스템은 클라이언트 사이드 렌더링을 위해 각 게시글에 지정된 사용자 배지를 포함합니다.
이 새로운 훅을 적극 활용하는 테마 중 하나는 Topic List Thumbnails 입니다. 작동 방식을 보려면 코드를 확인해 보세요.
설정에 종속적인 수정자
테마 수정자는 테마 설정에서 값을 가져오도록 구성할 수도 있으며, 이를 통해 사이트 운영자는 테마 코드를 수정하지 않고도 수정자 동작을 오버라이드할 수 있습니다. 수정자를 설정에 종속적으로 만들려면 about.json에서 다음 구문을 사용하세요:
{
"modifiers": {
"modifier_name": {
"type": "setting",
"value": "setting_name"
}
}
}
예를 들어, show_excerpts라는 이름의 테마 설정이 있고 이것이 serialize_topic_excerpts 수정자를 제어하도록 하려면:
settings.yml에서:
show_excerpts:
default: false
about.json에서:
{
"modifiers": {
"serialize_topic_excerpts": {
"type": "setting",
"value": "show_excerpts"
}
}
}
show_excerpts 설정이 변경되면 수정자 값이 자동으로 일치하도록 업데이트됩니다. 이를 통해 사이트 운영자는 관리자 UI를 통해 테마 동작을 유연하게 커스터마이즈할 수 있습니다.
이 문서는 버전 관리됩니다 - 변경 사항을 github에서 제안해 주세요.
