Skip to content

테마 경로 및 파일 구조

테마는 /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 예외가 발생했을 때 사용됩니다.

core/exception.py
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 예외가 발생했을 때 사용됩니다.

core/exception.py
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

테마의 스크린샷 파일입니다.

  • 테마를 배포할 때, 해당 파일을 포함해야 합니다.