[최신글 8/13] 개발 ① 스킨 규칙과 사용 가능한 변수 — DXCMS
키워드: 스킨 개발, 변수, posts, title, icon, more_url, show_excerpt, 규칙, 테마 표기: (소스)=코드 확인·실행 검증, (README)=README 기재, (일반)=일반 지식
최신글 스킨은 PHP 파일 하나이며, dx_board_latest() 함수 안에서 include 됩니다. (소스)
스킨에서 쓸 수 있는 변수 (실행으로 확인한 전체 목록)
- $posts: 글 배열 (5/13 의 항목)
- $title: 표시 제목 (비어 있으면 게시판 이름)
- $icon: 아이콘 문자열
- $more_url: 게시판 주소 (더보기 링크용)
- $show_excerpt: 발췌 표시 여부 (true/false)
- $board_key, $board_name: 게시판 키, 이름
- 호출 인자 그대로: $limit, $skin, $titleLen, $showExcerpt
- 함수 내부 변수: $db, $board, $skinFile, $excerptLen (읽기만 하고 수정하지 마세요)
- 함수 안에서 실행되므로 전역 변수는 global 선언이 필요합니다.
지켜야 할 규칙
- 파일 첫 줄에 직접 접근 차단: if (!defined('DX_CMS')) exit('Direct access not allowed.');
- 모든 출력은 htmlspecialchars($v, ENT_QUOTES, 'UTF-8') 로 이스케이프
- 비밀글은 is_secret 검사 후 제목·발췌·썸네일 숨김
- $posts 가 비어 있을 때 "게시글이 없습니다." 같은 안내 출력
- $show_excerpt 가 false 면 발췌를 출력하지 않음
- CSS 는 별도 파일로 분리하고 클래스에 고유 접두사 사용 (예: mycard-)
- 테마 색상 변수 사용: var(--bg-card), var(--border), var(--text-main), var(--text-muted), var(--p) (번들 스킨이 사용) (소스)
- 같은 페이지에서 여러 번 호출돼도 깨지지 않게 CSS 중복 방지 (9/13)
- PHP 5.6 호환 문법 사용: array(), isset() 사용, ?? 와 [] 단축 대신 호환 문법 (코어가 PHP 5.6~8.x 지원) (README)
스킨 파일 위치
- 내 테마: themes/{내테마}/board_latest/{이름}.php ← 권장
- 하위 폴더도 가능: board_latest/mine/card.php 는 'mine/card' 로 호출
- 파일 이름은 소문자·숫자·_·- 만 사용 (3/13)
다음: 9/13 개발 ② 새 스킨 만들기