boards/ — 게시판 시스템
게시판 핵심 처리 로직과 스킨 템플릿이 위치합니다. handler.php 하나가 목록•보기•쓰기•수정•삭제•댓글을 모두 처리하며, 스킨 시스템을 통해 게시판별 독립적인 UI를 적용할 수 있습니다.
boards/
├── handler.php ← 게시판 공통 핸들러 v2.6.3
├── skins/ ← 게시판 스킨 폴더
│ ├── SKIN_GUIDE.md ← 스킨 개발 가이드 문서
│ ├── gallery/ ← 갤러리형 스킨 (이미지 썸네일 목록)
│ │ ├── skin.json ← 스킨 메타 정보 (이름•버전•지원 액션)
│ │ ├── list.php ← 갤러리 목록 뷰
│ │ ├── view.php ← 갤러리 상세 뷰
│ │ ├── write.php ← 갤러리 작성 폼
│ │ └── _list_rows.php← 목록 행 파셜 (AJAX 부분 갱신용)
│ └── shop/ ← 쇼핑몰형 스킨 (상품 목록•상세)
│ ├── skin.json
│ ├── list.php
│ └── actions/ ← 커스텀 액션 파일
│ └── cart.php ← /게시판키/cart URL 처리
└── category/ ← 카테고리 탭 스킨
└── skins/ ← 카테고리 표시 스킨
└── default/ ← 기본 카테고리 탭 스킨
handler.php 의 6단계 스킨 탐색 우선순위
// 스킨 파일 탐색 순서 (handler.php 내부 DxBoardSkin::resolve())
① boards/skins/{스킨}/{액션}/handler.php ← 완전 독립 핸들러 (DB쿼리~렌더 모두)
② boards/skins/{스킨}/{액션}.php ← 독립 뷰 (데이터는 handler.php 제공)
③ themes/{테마}/board/{스킨}/{액션}.php ← 테마+스킨 조합
④ themes/{테마}/board/{액션}.php ← 테마 기본 스킨
⑤ themes/default/board/{스킨}/{액션}.php ← default 테마+스킨
⑥ themes/default/board/{액션}.php ← 최종 폴백 (항상 존재)
스킨 개발 — skin.json 구조
// boards/skins/my-skin/skin.json
{
"name": "My 스킨",
"version": "1.0.0",
"author": "개발자 이름",
"description": "스킨 설명",
"actions": ["list", "view", "write", "inventory"], // 지원하는 액션
"config": { // 관리자 설정 가능 값
"per_page": "20",
"date_format": "Y-m-d"
}
}
커스텀 액션 (표준 URL 외 확장)
- 표준 액션: list / view / write / edit / delete / reply / search
- 커스텀 액션 파일 위치: boards/skins/{스킨}/actions/{액션}.php
- URL 예시: /게시판키/inventory → boards/skins/erp/actions/inventory.php
- 커스텀 액션에서도 $board, $auth, $db 변수가 자동 주입됩니다