개요
테마 기능에서는 검색 화면의 외관(HTML / CSS / JavaScript 등의 정적 에셋 일체)을 묶은 「정적 테마」를 관리합니다. 정적 테마는 ZIP 아카이브로 업로드하며, 서버 상의 테마 디렉터리(기본값: themes , theme.directory.path 로 변경 가능)에 압축 해제됩니다. 각 테마의 루트에는 테마의 메타데이터를 기술한 theme.yml 매니페스트를 배치합니다.
참고
JSP 기반 테마는 플러그인 관리에서 취급하므로, 이 페이지의 대상 외입니다. 이 페이지의 작업을 수행하려면 admin-theme 역할(참조만 하는 경우는 admin-theme-view 역할)이 필요합니다.
관리 방법
표시 방법
등록된 테마의 목록 페이지를 열려면 왼쪽 메뉴의 [시스템 > 테마]를 클릭합니다.
테마 목록
목록 페이지에는 테마 디렉터리에 등록된 정적 테마가 표시됩니다. 각 행에 표시되는 항목은 다음과 같습니다.
| 썸네일 | 테마 디렉터리 내의 thumbnail.png 를 표시합니다. 존재하지 않는 경우는 표시되지 않습니다. |
| 이름 | 테마 이름(테마의 디렉터리 이름)입니다. 클릭하면 상세 페이지를 표시합니다. |
| 표시 이름 | 매니페스트의 displayName 입니다. |
| 버전 | 매니페스트의 version 입니다. |
| 기본값 | 기본 테마로 설정된 경우 체크가 표시됩니다. |
| 작업 | 테마를 삭제하기 위한 삭제 버튼이 표시됩니다(기본 테마에는 표시되지 않습니다). |
표: 테마 목록의 항목
기본 테마 설정
목록 페이지 상단의 풀다운 메뉴에서 테마를 선택하고 [기본값으로 설정] 버튼을 클릭하면 검색 화면에 적용할 기본 테마를 설정할 수 있습니다. [(기본값 없음)]을 선택하여 설정하면 기본 테마 지정이 해제됩니다. 설정 후에는 테마 정보가 다시 로드되어 즉시 반영됩니다.
테마 업로드
[업로드] 버튼을 클릭하면 업로드 페이지가 열립니다. 테마 ZIP 파일을 선택하고 [업로드] 버튼을 클릭하면 테마가 설치됩니다.
업로드할 수 있는 것은
.zip형식의 아카이브뿐입니다.압축 파일의 크기 상한은 기본값으로 50 MB(
theme.upload.max.size)입니다.ZIP 아카이브의 루트에는
theme.yml매니페스트가 필요합니다.
이미 같은 이름의 테마가 존재하는 경우 덮어씁니다. 덮어쓰인 원래 테마는 일정 기간(기본값 7일, theme.upload.attic.retention.days ) 백업으로 보존됩니다.
업로드한 아카이브가 매니페스트 검증에 실패한 경우나, 압축 해제 후의 크기·엔트리 수·압축률이 서버의 상한을 초과한 경우(zip 폭탄 대책)에는 설치가 거부되고 오류 메시지가 표시됩니다.
theme.yml 매니페스트
정적 테마의 루트에는 테마의 메타데이터를 기술한 theme.yml (YAML 형식)을 배치합니다. 지정 가능한 필드는 다음과 같습니다.
| 필드 | 필수 여부 | 설명 |
|---|---|---|
apiVersion | 필수 | fess.codelibs.org/v1 을 지정합니다. |
kind | 필수 | StaticTheme 을 지정합니다. |
name | 필수 | 테마 이름입니다. ^[a-z0-9][a-z0-9_-]{0,63}$ 패턴을 따라야 하며, 테마의 디렉터리 이름과 일치해야 합니다. |
displayName | 필수 | 화면에 표시할 이름입니다(최대 4096자). |
version | 필수 | SemVer 형식의 버전(예: 1.0.0 )입니다. |
author | 선택 | 작성자입니다. |
description | 선택 | 설명입니다. |
license | 선택 | 라이선스입니다. |
homepage | 선택 | 홈페이지 URL입니다. |
minFessVersion | 선택 | 지원하는 최소 Fess 버전입니다. |
supportedLocales | 선택 | 지원하는 로케일입니다. |
entry | 선택 | 엔트리 포인트가 되는 파일입니다(기본값: index.html ). |
spaFallback | 선택 | SPA 형식의 폴백 활성화·비활성화입니다(기본값: true ). |
표: theme.yml 의 필드
테마 삭제
목록 페이지의 삭제 버튼 또는 상세 페이지의 [삭제] 버튼에서 테마를 삭제할 수 있습니다. 기본 테마로 설정된 테마는 삭제할 수 없습니다. 삭제하기 전에 기본 테마 지정을 해제하십시오. 삭제된 테마는 일정 기간(기본값 7일, theme.upload.attic.retention.days ) 백업으로 보존됩니다.
다시 로드
테마 디렉터리를 서버에서 직접 편집한 경우 등에 [다시 로드] 버튼을 클릭하면, 디스크 상의 테마 정보를 메모리에 다시 로드할 수 있습니다.
테마 상세
목록 페이지에서 테마 이름을 클릭하면 상세 페이지가 표시됩니다. 상세 페이지에서는 매니페스트의 내용(이름, 표시 이름, 버전, 기본값 여부, 상태)을 확인할 수 있습니다.
설정 프로퍼티
테마 기능과 관련된 주요 설정은 fess_config.properties 에서 변경할 수 있습니다.
| 프로퍼티 | 기본값 | 설명 |
|---|---|---|
theme.directory.path | themes | 테마를 저장하는 디렉터리입니다(서블릿 컨텍스트로부터의 상대 경로 또는 절대 경로). |
theme.upload.max.size | 52428800 | 업로드 가능한 ZIP의 최대 크기(바이트, 약 50 MB)입니다. |
theme.upload.max.extracted.size | 209715200 | 압축 해제 후의 최대 합계 크기(바이트, 약 200 MB)입니다. |
theme.upload.max.entries | 1000 | ZIP에 포함할 수 있는 최대 엔트리 수입니다. |
theme.upload.max.compression.ratio | 100 | 엔트리 단위의 최대 압축률입니다. |
theme.upload.zip.ratio.max | 50 | 누적 압축률의 상한입니다(zip 폭탄 대책). |
theme.upload.zip.ratio.check.threshold.bytes | 65536 | 누적 압축률 평가를 시작하는 압축 바이트 수입니다. |
theme.upload.attic.retention.days | 7 | 덮어쓰거나 삭제한 테마의 백업을 보존하는 일수입니다. |
표: 테마 기능의 설정 프로퍼티