themes/ — 테마 시스템
사이트 프론트엔드의 모든 HTML•CSS를 담당합니다. 현재 default 테마가 포함되어 있으며, 추가 테마를 이 폴더에 배치하면 관리자에서 선택할 수 있습니다.
themes/
└── default/ ← 기본 테마 (항상 존재, 폴백 기준)
├── theme.json ← 테마 메타 정보 (이름•버전•설명)
├── style.css ← 전역 스타일 (CSS 커스텀 프로퍼티 기반)
├── layout/ ← 페이지 레이아웃 템플릿
│ └── main.php ← 헤더+본문+푸터 통합 레이아웃
├── board/ ← 게시판 스킨 오버라이드
│ ├── list.php ← 게시판 목록 (기본 스킨)
│ ├── view.php ← 게시글 상세
│ ├── write.php ← 게시글 작성•수정 폼
│ └── _list_rows.php ← 목록 행 파셜 (AJAX 갱신용)
├── board_latest/ ← 최신글 위젯 스킨 3종
│ ├── list.php ← 제목+날짜 리스트형
│ ├── card.php ← 썸네일+제목+발췌 카드형
│ └── simple.php ← 제목만 초경량형
├── page/ ← 특수 페이지 템플릿
│ ├── home.php ← 홈 페이지 (선택, 없으면 pages/home.php 폴백)
│ ├── 404.php ← 404 오류 페이지
│ └── 403.php ← 403 접근 거부 페이지
├── parts/ ← 재사용 파셜 컴포넌트
│ └── pagination.php ← 페이지네이션 UI
├── search/ ← 검색 결과 페이지
│ └── list.php
└── icons/ ← 테마 전용 아이콘 파일
테마 폴백 체인
커스텀 테마에 파일이 없으면 자동으로 default 테마 파일을 사용합니다. 커스텀 테마는 변경이 필요한 파일만 오버라이드하면 됩니다.
// DxTheme::resolve('board/list.php') 내부 탐색 순서
// 예: 현재 테마가 'my-theme'
1. themes/my-theme/board/list.php ← 있으면 즉시 반환
2. themes/default/board/list.php ← 없으면 여기서 반환
3. 404 처리
layout/main.php 의 구조
테마의 핵심 파일로, 모든 페이지의 HTML 전체 구조(헤더•내비게이션•본문•푸터)를 렌더링합니다.
// main.php 실행 순서 (요약)
① DxSeo::build() — OG/Twitter Card/JSON-LD 자동 생성
② 메뉴 쿼리 (멀티사이트 도메인별 독립 메뉴 지원)
③ <head> 태그 출력 + dx_run_hook('dx_head')
④ 네비게이션 바 출력 (로그인•비로그인 분기)
⑤ $dx_content 출력 (게시판•페이지 등 핸들러가 생성한 본문)
⑥ 푸터 (사이트 설정에서 로드: 회사명•대표자•사업자번호 등)
⑦ dx_run_hook('dx_body_bottom') — 팝업•GA•소켓 등
board_latest/ — 최신글 위젯
테마 레이아웃이나 홈 페이지에서 최신 게시글을 보여주는 위젯 스킨입니다.
// 사용 예 (테마 파일 내부)
<?php echo dx_board_latest('free', 5, 'card'); ?>
// 파라미터: board_key, 개수, 스킨명 (list | card | simple)
// 자동으로 themes/default/board_latest/card.php 를 렌더링