테마 경로 및 파일 구조¶
테마는 /templates
디렉토리에 위치하며, 기본 테마(basic)와 사용자가 만든 테마들이 포함됩니다. 각 테마 내부에는 다양한 기능과 페이지를 위한 템플릿 파일과 디렉토리로 구성됩니다.
(예: member/
, board/
, content/
등).
사용자 테마 생성 방법
사용자는 기본 테마(basic)를 그대로 복사해서 새로운 사용자 정의 테마를 쉽게 만들 수 있습니다.
이 과정과 관련된 자세한 지침은 테마 제작 매뉴얼에서 확인할 수 있습니다.
테마 구조¶
아래는 그누보드6 테마의 대표적인 경로와 파일 구조를 나타냅니다. 각 테마와 스킨은 웹사이트의 특정 섹션 또는 기능에 맞게 디자인되어 있으며, 사용자는 이를 통해 웹사이트의 외관을 자유롭게 변경할 수 있습니다.
├─ templates/
│ ├─ user_theme/ # 사용자가 만드는 테마(배포본에는 없음)
│ └─ basic/
│ ├─ bbs/
│ │ ├─ mail_form/
│ │ └─ ...
│ ├─ board/
│ │ ├─ basic
│ │ │ ├─ list_post.html
│ │ │ ├─ read_post.html
│ │ │ └─ write_form.html
│ │ ├─ gallery
│ │ ├─ group.html
│ │ └─ move.html
│ ├─ content/
│ │ ├─ basic
│ │ └─ company
│ ├─ faq/
│ ├─ latest/
│ ├─ member/
│ ├─ memo/
│ ├─ mobile/
│ ├─ new/
│ ├─ qa/
│ ├─ sideview/
│ ├─ social/
│ ├─ static/
│ ├─ visit/
│ ├─ alert_close.html
│ ├─ alert.html
│ ├─ base_sub.html
│ ├─ base.html
│ ├─ index.html
│ ├─ LICENSE
│ ├─ readme.txt
│ └─ screenshot.png
bbs/¶
사이트의 범용 기능 을 위한 템플릿이 위치합니다.
mail_form/
: 기능별 메일 발송 양식 템플릿 파일들이 위치합니다.
board/¶
게시판 기능 에 대한 템플릿 파일들이 위치하며, 게시판 공통 템플릿 과 스킨 폴더 로 구성됩니다.
basic/
: 기본 게시판 스킨 폴더gallery/
: 갤러리 스킨 폴더
모든 게시판 스킨은 아래 파일을 포함합니다.
list_post.html
: 목록 템플릿read_post.html
: 상세 템플릿write_form.html
: 글 작성/수정 템플릿
content/¶
내용 기능 에 대한 템플릿 파일들이 위치하며, 스킨 폴더 로 구성됩니다.
basic/
: 기본 내용 스킨 폴더company/
: 회사 소개 스킨 폴더
faq/¶
FAQ 기능 에 대한 템플릿 파일들이 위치합니다.
latest/¶
최신글 기능 에 대한 템플릿 파일들이 위치합니다.
해당 경로의 템플릿 파일은 독립적으로 사용되지 않습니다.
member/¶
회원 기능 에 대한 템플릿 파일들이 위치합니다.
memo/¶
메모 기능 에 대한 템플릿 파일들이 위치합니다.
mobile/¶
적응형 옵션이 활성화되어 있을 때, 모바일 환경에서 사용되는 템플릿 파일들이 위치합니다.
폴더 구조는 테마 구조와 동일하게 구성됩니다.
모바일 템플릿 제작
모바일 템플릿은 기본 템플릿을 그대로 복사해서 만들 수 있습니다.
모바일 템플릿 제작에 관한 자세한 정보는 모바일 테마 제작을 참고하세요.
모바일 테마를 만들려면, 모든 템플릿을 만들어야 하나요?
아니요. 걱정하지 않아도 됩니다.
모바일 경로에 템플릿 파일이 없을 경우, 자동으로 기본(반응형) 템플릿 파일을 사용합니다.
new/¶
새글 기능 에 대한 템플릿 파일들이 위치합니다.
Bug
새글에는 스킨 기능이 사용되지 않으므로 스킨 경로는 제거될 예정입니다.
qa/¶
1:1문의 기능 에 대한 템플릿 파일들이 위치합니다.
sideview/¶
사이드뷰 기능 에 대한 템플릿 파일들이 위치합니다.
그누보드5의 get_sideview()
함수를 템플릿화한 파일이 위치합니다.
Macros
사이드뷰 기능은 Jinja Template의 Macros
기능을 사용하여 템플릿화되어 있습니다.
여러 페이지에서 동일한 기능을 사용할 때 유용합니다.
social/¶
소셜로그인 기능 에 대한 템플릿 파일들이 위치합니다.
static/¶
테마 내부에서 사용되는 정적 파일 이 위치합니다.
(예: CSS, JS, 이미지 등)
visit/¶
방문자 기능 에 대한 템플릿 파일들이 위치합니다.
alert_close.html¶
새창에서 오류 메시지 출력 후 창을 닫을 때 사용되는 템플릿 파일입니다.
AlertCloseException
예외가 발생했을 때 사용됩니다.
def regist_core_exception_handler(app: FastAPI) -> None:
"""애플리케이션 인스턴스에 예외처리 핸들러를 등록합니다."""
...
@app.exception_handler(AlertCloseException)
async def alert_close_exception_handler(request: Request, exc: AlertCloseException):
"""AlertCloseException 예외처리 handler 등록"""
context = {
"request": request,
"errors": exc.detail
}
return template_response("alert_close.html", context, exc.status_code)
alert.html¶
오류 메시지 출력 시 사용되는 템플릿 파일입니다.
AlertException
예외가 발생했을 때 사용됩니다.
def regist_core_exception_handler(app: FastAPI) -> None:
"""애플리케이션 인스턴스에 예외처리 핸들러를 등록합니다."""
@app.exception_handler(AlertException)
async def alert_exception_handler(request: Request, exc: AlertException):
"""AlertException 예외처리 handler 등록"""
context = {
"request": request,
"errors": exc.detail,
"url": exc.url
}
return template_response("alert.html", context, exc.status_code)
...
base_sub.html¶
테마에서 사용되는 모든 템플릿의 기반이 되는 템플릿 파일입니다.
HTML 문서의 기본 구조가 되는 태그 (head
, body
)들이 포함되어 있습니다.
base.html¶
base_sub.html
템플릿을 상속받아 사용하는 템플릿 파일입니다.
테마에서 사용하는 공통 레이아웃 을 포함하며, body
태그 내부에 위치합니다.
index.html¶
테마의 메인 페이지 템플릿 파일입니다.
LICENSE¶
테마의 라이선스 파일입니다.
- 테마를 배포할 때, 해당 파일을 포함해야 합니다.
readme.txt¶
테마의 정보가 포함된 파일입니다.
- 테마를 배포할 때, 해당 파일을 포함해야 합니다.
screenshot.png¶
테마의 스크린샷 파일입니다.
- 테마를 배포할 때, 해당 파일을 포함해야 합니다.