회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
로그인 회원가입
고객센터
6. 게시판

스킨 DX마켓 등록

D DX
2026.05.01 01:35(수정됨) 125 0

1장. DX마켓 개요

DX마켓(DX Market)은 DXCMS용 스킨•플러그인•테마를 개발자가 등록하고 사용자가 설치하는 중앙 배포 플랫폼입니다. 중앙서버(designonex.com)가 메타데이터와 SHA-256 파일 해시를 관리하며, 실제 파일은 개발자 서버에서 직접 배포됩니다. 사용자가 설치 버튼을 누르면 DXCMS가 중앙서버에서 download_url을 받아 개발자 서버에서 ZIP을 직접 내려받고, 해시 검증 후 자동 설치합니다.


1.1 시스템 아키텍처

DX마켓은 3자 구조로 동작합니다:
 
구성 요소 역할
중앙서버 (designonex.com) 개발자 인증(dev_key), 메타데이터 저장, SHA-256 해시 관리, 마켓 목록 API 제공
개발자 서버 (내 서버) 실제 ZIP 파일 호스팅. download_url로 직접 서빙
DXCMS (사용자 사이트) 중앙서버 API로 목록 조회 및 설치. DxMarket 클래스가 모든 통신 담당


1.2 전체 등록•설치 흐름

  1. 개발자: designonex.com에서 회원가입 후 개발자 키(dxd_...) 발급
  2. 개발자: 스킨을 ZIP으로 패키징하여 자신의 서버에 업로드
  3. 개발자: DXCMS 관리자 → DX마켓 → 개발자 탭에서 스킨 정보 + download_url 입력 후 등록
  4. 중앙서버: download_url에서 ZIP 다운로드 후 SHA-256 해시 생성•저장
  5. 중앙서버: 마켓 목록에 스킨 공개
  6. 사용자: 마켓 탐색 탭에서 스킨 검색 후 설치 버튼 클릭
  7. DXCMS: 중앙서버에서 download_url + file_hash 수신 → 개발자 서버에서 ZIP 직접 다운로드
  8. DXCMS: SHA-256 해시 검증 후 boards/skins/{folder_name}/ 에 압축 해제

🔒 보안 설계 원칙
중앙서버는 메타데이터와 해시만 저장 — 실제 파일은 보관하지 않습니다.
사용자 설치 시 SHA-256 해시로 파일 무결성 검증 — 변조된 파일은 설치 거부됩니다.
개발자 키(dxd_...)는 X-Dev-Key 헤더로 전송 — URL에 노출되지 않습니다.
ZIP 매직 바이트(PK) 검증 — 유효하지 않은 파일은 설치되지 않습니다.


2장. 개발자 키(dev_key) 발급


2.1 개발자 키란

개발자 키(dev_key)는 dxd_ 접두사로 시작하는 API 인증 키입니다. 마켓에 스킨을 등록•수정•삭제하기 위해 반드시 필요합니다. 키는 designonex.com에서 발급되며 DXCMS에 한 번 저장하면 이후 등록/업데이트 시 자동으로 사용됩니다.


2.2 개발자 키 발급 단계

  1. designonex.com 접속 후 회원가입 또는 로그인
  2. 상단 메뉴 또는 마이페이지에서 developer-key.php 페이지 접속
  3. 사이트 정보 입력 (사이트 도메인, 사이트 URL, 개발자 이름, 이메일) 후 발급 요청
  4. 발급된 dxd_... 형식의 키 복사
  5. 내 DXCMS 관리자 → DX마켓 → 개발자 탭 이동
  6. 개발자 키 입력란에 붙여넣기 후 "키 저장" 클릭
  7. "개발자 키가 등록되어 있습니다" 초록 배지 확인

💡 개발자 키 형식
형식: dxd_{영숫자}_{32자 이상 랜덤 문자열}
예시: dxd_a1b2c3d4_e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
"dxd_"로 시작하지 않는 키는 DXCMS에서 저장을 거부합니다.


2.3 DXCMS에 개발자 키 저장

발급받은 키는 DXCMS 관리자 화면에서 저장합니다. 저장된 키는 settings 테이블의 market_dev_key 키로 보관됩니다.
  1. 관리자 → DX마켓 메뉴 클릭
  2. "개발자" 탭 클릭
  3. "발급받은 개발자 키 입력" 입력란에 dxd_... 키 붙여넣기
  4. "키 저장" 버튼 클릭
  5. 페이지 상단에 초록색 "개발자 키가 교체되었습니다" 메시지 확인
  6. "개발자 키가 등록되어 있습니다" 패널과 키 복사 버튼이 표시되면 완료


2.4 개발자 키 교체

키가 유출되거나 갱신이 필요한 경우 designonex.com에서 새 키를 재발급 후 DXCMS에서 교체합니다. 교체 방법은 최초 저장과 동일합니다. 기존 키로 등록된 스킨은 새 키로 자동으로 관리됩니다(동일 계정이라면).


3장. 스킨 ZIP 패키징


3.1 ZIP 필수 구조

마켓에 등록하려면 스킨을 ZIP 파일로 패키징해야 합니다. 스킨 설치 후 필수 파일 검증을 통과해야 하므로, 아래 3개 파일은 반드시 포함해야 합니다.


필수 파일 (이 3개가 없으면 설치 후 자동 롤백됨):

  skin.json      ← 스킨 메타 정보 (앵커 파일, ZIP 내 위치 감지에 사용)
  list.php       ← 목록 뷰
  view.php       ← 상세 뷰


3.2 ZIP 내부 구조

ZIP을 만들 때 폴더를 포함하여 압축하거나 파일만 압축하는 두 가지 방식 모두 지원됩니다. DxMarket 설치 엔진이 skin.json 위치를 자동으로 감지하여 prefix를 제거하고 설치합니다.


방식 A — 폴더 포함 압축 (권장)

my-skin.zip
  └── my-skin/          ← 폴더명은 아무거나 가능 (자동 감지)
       ├── skin.json    ← 앵커 파일
       ├── list.php
       ├── view.php
       ├── write.php
       ├── style.css
       ├── parts/
       └── assets/


방식 B — 루트 압축 (파일만)

my-skin.zip
  ├── skin.json         ← ZIP 루트에 바로 위치
  ├── list.php
  ├── view.php
  ├── write.php
  └── style.css

💡 ZIP 생성 팁
Windows: 스킨 폴더 우클릭 → "압축(ZIP) 폴더에 보내기" (방식 A)
macOS: 폴더 우클릭 → "압축" (방식 A)
Linux: zip -r my-skin.zip my-skin/ (방식 A)
파일만: zip my-skin.zip skin.json list.php view.php write.php style.css (방식 B)
중요: __MACOSX/ 폴더나 .DS_Store가 포함되어도 설치에는 영향 없습니다.


3.3 skin.json 권장 내용

마켓 등록 전 skin.json에 아래 정보를 충실히 작성하면 사용자에게 더 나은 정보를 제공합니다.
{
    "name": "내 스킨 이름",
    "version": "1.0.0",
    "author": "개발자 이름",
    "description": "스킨에 대한 상세 설명",
    "actions": ["list", "view", "write"],
    "config": {
        "columns": "3",
        "date_format": "Y.m.d"
    }
}


3.4 파일 호스팅

완성된 ZIP 파일을 다운로드 가능한 URL로 호스팅해야 합니다. DXCMS가 해당 URL에서 파일을 직접 내려받으므로 외부에서 접근 가능해야 합니다.
 
호스팅 방법 특징
자체 웹서버 완전한 제어 가능. HTTPS 권장. 예: https://mysite.com/skins/my-skin-v1.0.0.zip
GitHub Releases 버전 관리 용이. URL: https://github.com/{user}/{repo}/releases/download/v1.0.0/my-skin.zip
Amazon S3 / 클라우드 대용량, 고가용성. 퍼블릭 읽기 권한 설정 필요
NAS / 개인 서버 직접 운영. 방화벽에서 80/443 포트 개방 필요

⚠️ 주의사항
download_url은 ZIP 파일을 직접 가리켜야 합니다 (리다이렉트 주소 불가).
URL이 변경되면 마켓에서 업데이트 등록으로 새 URL을 저장하세요.
파일 내용이 변경되면 반드시 버전을 올리고 업데이트 등록을 해야 해시가 갱신됩니다.
HTTPS URL을 강력히 권장합니다 (HTTP도 동작하지만 보안상 불리).


4장. 마켓 등록 (관리자 화면 사용법)


4.1 등록 화면 접근

  1. DXCMS 관리자 로그인
  2. 좌측 메뉴 또는 상단에서 "DX마켓" 클릭
  3. "개발자" 탭 클릭 (개발자 키가 저장되어 있어야 이 탭이 활성화됨)
  4. "플러그인/테마 마켓 등록" 섹션 확인


4.2 등록 폼 필드 상세

등록 폼의 각 필드를 정확히 입력해야 마켓에 올바르게 표시됩니다.
 
필드명 필수 여부 설명 및 입력 예시
종류 (item_type) 필수 skin 선택. plugin·theme·skin 중 선택. 스킨은 반드시 skin
폴더명 (folder_name) 필수 설치될 폴더명. 영문·숫자·하이픈만. 예: my-board-skin, card-view
버전 (version) 필수 시맨틱 버전. 예: 1.0.0, 2.1.3. 업데이트 시 반드시 올려야 함
이름 (name) 필수 마켓에 표시될 스킨 이름. 예: 카드형 게시판 스킨
카테고리 (category) 권장 board·shop·blog·social·utility·seo·security·etc 중 선택
다운로드 URL (download_url) 필수 * ZIP 파일의 직접 URL. 등록 시 중앙서버가 이 URL에서 파일을 검증
미리보기 이미지 URL (preview_url) 권장 마켓 카드에 표시될 스크린샷 이미지 URL (JPG/PNG/WebP)
홈페이지 URL (homepage_url) 선택 스킨 상세 페이지 또는 GitHub 등 외부 URL
설명 (description) 권장 스킨 기능 및 특징 설명. 마켓 카드에 2줄까지 표시
태그 (tags) 권장 검색에 활용. 쉼표 구분. 예: 카드,갤러리,반응형,다크모드
변경사항 (changelog) 업데이트 시 버전 업데이트 시 변경 내용. 예: 다크모드 지원 추가, 모바일 최적화
유료 여부 (is_paid) 선택 체크 시 유료 아이템으로 표시. 가격·통화·구매 URL 추가 입력
가격 (price) 유료 시 숫자로 입력. 예: 9900 (KRW) / 9.99 (USD)
통화 (price_unit) 유료 시 KRW 또는 USD
구매 URL (purchase_url) 유료 시 결제 페이지 URL. 사용자가 설치 대신 "구매" 버튼으로 이동
최소 CMS 버전 (cms_min_ver) 선택 호환 최소 DXCMS 버전. 예: 8.0.0
최소 PHP 버전 (php_min_ver) 선택 기본 5.6. PHP 8.x 전용이면 8.0 입력


4.3 등록 버튼 클릭 후 처리 흐름

  1. DXCMS가 입력값을 JSON으로 조립 후 중앙서버 /market_register.php에 POST
  2. 요청 헤더에 X-Dev-Key: {dxd_...} 포함
  3. 중앙서버가 dev_key 유효성 검증
  4. 중앙서버가 download_url에서 ZIP 파일 다운로드
  5. ZIP 파일 SHA-256 해시 계산 후 DB 저장
  6. 마켓 목록에 스킨 공개
  7. 중앙서버가 unique_id + file_hash를 응답으로 반환
  8. DXCMS 화면에 "마켓 등록 완료 — unique_id: ... / hash: ..." 메시지 표시

등록 성공 메시지 예시
마켓 등록 완료 — unique_id: skin_a1b2c3d4 / hash: e5f6a7b8c9d0...

→ unique_id: 마켓에서 이 스킨을 식별하는 고유 ID. 업데이트•삭제 시 사용됩니다.
→ hash: ZIP 파일의 SHA-256 해시 앞 16자리. 무결성 검증에 사용됩니다.


4.4 등록 실패 대응

오류 메시지 원인 및 해결
개발자 키가 없습니다. 개발자 키 미저장. 키 저장 먼저 진행
올바른 개발자 키를 입력하세요. dxd_로 시작하지 않는 키 입력. 발급된 키 재확인
download_url에서 파일 다운로드 실패 URL 오류 또는 서버 방화벽. URL 직접 접속 테스트
ZIP 파일이 유효하지 않음 URL이 ZIP이 아닌 다른 파일 가리킴. 브라우저에서 URL 직접 다운로드 확인
폴더명 중복 또는 등록 실패 이미 동일 folder_name이 등록된 경우. 다른 폴더명 사용 또는 업데이트로 재등록
dev_key 인증 실패 키 만료 또는 계정 문제. designonex.com에서 키 재발급


5장. 버전 업데이트 등록


5.1 업데이트가 필요한 경우

  • 스킨 파일 수정 — list.php, view.php, style.css 등 파일 내용이 변경된 경우
  • 새 기능 추가 — 커스텀 액션, 파셜, 에셋 파일 추가
  • 버그 수정 — 오류 수정 후 배포
  • 보안 패치 — 보안 취약점 수정


5.2 업데이트 등록 절차

  1. 스킨 파일 수정 후 skin.json의 version 값을 올림 (예: 1.0.0 → 1.1.0)
  2. 새 ZIP 파일로 다시 패키징
  3. 개발자 서버의 ZIP 파일 교체 (URL이 같아도 내용이 달라지면 새 해시 생성됨)
  4. DXCMS 관리자 → DX마켓 → 개발자 탭 → 등록 폼으로 이동
  5. 동일한 folder_name + 올린 version + 새 download_url 입력
  6. changelog 필드에 변경 내용 입력 (예: "다크모드 지원 추가, 모바일 레이아웃 개선")
  7. "마켓에 등록 / 업데이트" 버튼 클릭
  8. "버전 업데이트 완료 — unique_id: ..." 메시지 확인

⚠️ 중요: 버전을 반드시 올려야 합니다
동일 folder_name으로 다시 등록하면 중앙서버가 업데이트(UPDATE)로 처리합니다.
단, version이 같으면 중앙서버가 업데이트를 거부할 수 있습니다.
파일 내용이 변경되면 해시가 달라지므로, 기존 설치자는 재설치가 필요합니다.
download_url은 동일해도 되지만, 파일 내용이 변경되었다면 새 해시로 갱신됩니다.


5.3 버전 넘버링 권장

버전 유형 예시 및 기준
패치 버전 (x.x.N) 1.0.0 → 1.0.1: 버그 수정, 미세 조정. 하위 호환성 유지
마이너 버전 (x.N.0) 1.0.0 → 1.1.0: 새 기능 추가 (하위 호환 유지). 선택적 업그레이드
메이저 버전 (N.0.0) 1.0.0 → 2.0.0: 구조적 변경, 하위 호환 불가. 기존 설치자 주의 필요


6장. 마켓에서 내리기 (삭제)


6.1 마켓 삭제 절차

등록한 스킨을 마켓 목록에서 제거할 수 있습니다. 삭제 후에는 새 사용자가 검색•설치할 수 없지만, 기존에 설치된 스킨에는 영향이 없습니다.
  1. 관리자 → DX마켓 → 개발자 탭
  2. 삭제할 스킨의 unique_id 확인 (등록 시 성공 메시지에서 확인 가능)
  3. "마켓에서 내리기" 섹션에 unique_id 입력 후 삭제 요청
  4. "마켓에서 내려졌습니다." 메시지 확인


6.2 삭제 처리 흐름

  1. DxMarket::deleteItem($devKey, $uniqueId)가 호출되면:
  2. 중앙서버 /market_delete.php에 POST (X-Dev-Key 헤더 포함)
  3. 중앙서버가 dev_key와 unique_id 소유 관계 검증
  4. 해당 스킨을 마켓 목록에서 비활성화
  5. 성공 시 DXCMS에 {success: true} 반환


7장. 사용자의 스킨 설치 흐름


7.1 마켓 탐색 화면

사용자는 관리자 → DX마켓 → 마켓 탐색 탭에서 스킨을 검색하고 설치할 수 있습니다.
 
UI 요소 기능
검색창 스킨 이름, 태그로 검색
종류 필터 전체 / 플러그인 / 테마 / 스킨 필터
정렬 최신순 / 인기순 / 평점순
스킨 카드 미리보기 이미지, 이름, 버전, 제작자, 평점, 설명, 다운로드 수 표시
설치 버튼 무료: 바로 설치. 유료: 구매 페이지로 이동. 이미 설치된 경우: "✓ 설치됨" 표시
홈페이지 버튼 homepage_url이 있을 때 표시. 스킨 상세 정보 페이지로 이동


7.2 설치 버튼 클릭 시 내부 처리

  1. 브라우저에서 confirm("스킨을 설치하시겠습니까?") 확인창 표시
  2. DXCMS가 /admin/market에 POST (action=install_item, unique_id, item_type 전송)
  3. DxMarket::installItem() 호출
  4. 중앙서버 /market_download.php에 GET (unique_id, site_domain 전송)
  5. 중앙서버가 download_url, file_hash, folder_name, version, item_type 반환
  6. DXCMS가 download_url에서 ZIP 파일 직접 다운로드 (타임아웃 60초)
  7. SHA-256 해시 계산 후 file_hash와 비교 — 불일치 시 설치 중단
  8. ZIP 매직 바이트(PK) 검증 — 유효하지 않으면 중단
  9. data/cache/에 임시 파일 저장 (_mkt_{hash}.zip)
  10. item_type=skin이므로 boards/skins/{folder_name}/ 에 압축 해제
  11. 필수 파일 검증: skin.json + list.php + view.php 존재 확인
  12. 검증 실패 시 설치 폴더 자동 삭제 (롤백)
  13. 임시 ZIP 파일 삭제
  14. "folder_name v1.0.0 설치 완료." 메시지 표시


7.3 설치 후 스킨 적용

  1. 관리자 → 게시판 관리 → 해당 게시판 수정
  2. "게시판 스킨" 드롭다운에서 새로 설치된 스킨 선택
  3. 저장 → 게시판 목록 확인


7.4 설치 실패 대응

오류 메시지 원인 및 해결
파일 무결성 검증 실패 ZIP이 변조됨. 개발자에게 신규 등록(업데이트) 요청
"folder_name" 폴더가 이미 존재 이미 설치된 스킨. boards/skins/ 에서 폴더 삭제 후 재시도
설치 후 필수 파일 검증 실패 ZIP에 skin.json, list.php, view.php 중 하나 누락. 개발자에게 문의
data/cache/ 에 쓰기 권한 없음 서버 폴더 권한 문제. data/cache/ 권한 755 이상으로 변경
파일 다운로드 실패 개발자 서버 오프라인 또는 URL 변경. 개발자에게 문의


8장. DxMarket 클래스 상세


8.1 클래스 위치 및 접근

DxMarket 클래스는 core/DxMarket.php에 위치하며, 싱글턴 패턴으로 사용합니다.
$market = DxMarket::getInstance();


8.2 주요 상수

상수 값 및 설명
API_BASE 'https://designonex.com/rest_api' — 중앙서버 REST API 기본 URL
TIMEOUT 15초 — API 요청 타임아웃 (파일 다운로드는 별도 60초)
CACHE_TTL 300초 (5분) — 마켓 목록 인메모리 캐시 TTL


8.3 주요 메서드

메서드 설명 및 파라미터
registerDeveloper($params) 개발자 키 발급 요청 (X-MB-Token 인증)
registerItem($devKey, $payload) 스킨/플러그인/테마 마켓 등록 또는 업데이트
deleteItem($devKey, $uniqueId) 마켓에서 아이템 내리기
getMarket($params) 마켓 목록 조회. type, search, sort, category, page 등 파라미터
getItem($uniqueId) 단일 아이템 상세 조회 (60초 캐시)
getStats() 마켓 통계 (전체 수, 플러그인/테마/스킨 수, 총 다운로드)
installItem($uniqueId, $itemType, $version) 아이템 설치 (다운로드→해시검증→압축해제→검증)
clearCache() 인메모리 캐시 전체 초기화


8.4 HTTP 통신 방식

DxMarket는 cURL을 우선 사용하고, 없으면 file_get_contents로 폴백합니다. PHP 5.6 이상의 모든 환경을 지원합니다.
 
방법 사용 조건 및 설명
cURL (우선) curl_init() 함수가 존재하는 경우. SSL_VERIFYPEER=false, FOLLOWLOCATION=true
file_get_contents (폴백) cURL 미설치 환경. stream_context로 헤더·타임아웃 설정


8.5 캐시 동작

마켓 목록과 아이템 상세는 인메모리 캐시를 사용합니다. 동일 요청이 5분 내 반복되면 API 호출 없이 캐시에서 반환합니다.
// 캐시 키 패턴
mkt_list_{md5(params_json)}  → getMarket() 결과 (5분)
mkt_item_{unique_id}         → getItem() 결과 (60초)
mkt_stats                    → getStats() 결과 (60초)

// 캐시 강제 초기화
$market->clearCache();


8.6 ZIP 압축 해제 엔진

ZipArchive 클래스가 있으면 사용하고, 없으면 순수 PHP ZIP 파서로 폴백합니다. Deflate(Method 8) 및 비압축(Method 0) 방식을 지원합니다.
 
압축 해제 방식 지원 조건
ZipArchive (우선) php_zip 확장 설치된 경우. 속도·메모리 효율 우수
순수 PHP 파서 (폴백) php_zip 미설치 환경. gzinflate() 내장 함수 사용. Method 0/8만 지원


9장. 중앙서버 API 레퍼런스

중앙서버 API 기본 URL: https://designonex.com/rest_api


9.1 마켓 등록 요청 payload (register_item)

POST /market_register.php 로 전송되는 JSON 본문:
{
  "item_type":    "skin",                           // 필수: plugin|theme|skin
  "folder_name":  "my-skin",                        // 필수: 설치 폴더명
  "name":         "내 스킨",                         // 필수: 표시 이름
  "version":      "1.0.0",                          // 필수: 버전
  "author":       "개발자명",                        // 선택
  "author_url":   "https://mysite.com",             // 선택
  "homepage_url": "https://mysite.com/skin",        // 선택
  "download_url": "https://mysite.com/skin.zip",   // 필수: ZIP 직접 URL
  "preview_url":  "https://mysite.com/preview.png", // 선택: 스크린샷
  "category":     "board",                          // 선택: 카테고리
  "tags":         "카드,갤러리,반응형",               // 선택: 쉼표 구분
  "is_paid":      0,                                // 0=무료, 1=유료
  "price":        0,                                // 유료 시 가격
  "price_unit":   "KRW",                            // KRW|USD
  "purchase_url": "",                               // 유료 시 구매 URL
  "description":  "스킨 설명",                       // 선택
  "cms_min_ver":  "8.0.0",                          // 선택: 최소 CMS 버전
  "php_min_ver":  "5.6",                            // 선택: 최소 PHP 버전
  "changelog":    "초기 릴리즈"                       // 선택: 업데이트 내용
}


9.2 마켓 등록 성공 응답

{
  "success":   true,
  "unique_id": "skin_a1b2c3d4",   // 마켓 고유 ID (업데이트•삭제 시 사용)
  "action":    "created",          // created | updated
  "file_hash": "e5f6a7b8..."       // ZIP 파일의 SHA-256 해시
}


9.3 마켓 목록 응답 구조

{
  "success": true,
  "total":   42,
  "pages":   3,
  "data": [
    {
      "unique_id":       "skin_a1b2c3d4",
      "item_type":       "skin",
      "folder_name":     "my-skin",
      "name":            "내 스킨",
      "version":         "1.0.0",
      "author":          "개발자명",
      "dev_name":        "개발자 계정명",
      "description":     "설명",
      "preview_url":     "https://...",
      "homepage_url":    "https://...",
      "is_paid":         0,
      "price":           0,
      "download_count":  1234,
      "rating_avg":      4.8,
      "rating_count":    23
    }
  ]
}


10장. 실전 등록 체크리스트


10.1 등록 전 체크리스트

  • [ ] designonex.com 회원가입 완료
  • [ ] 개발자 키(dxd_...) 발급 완료
  • [ ] DXCMS 관리자 → DX마켓 → 개발자 키 저장 완료
  • [ ] 스킨 폴더에 skin.json 존재 (name, version, author 포함)
  • [ ] 스킨 폴더에 list.php 존재
  • [ ] 스킨 폴더에 view.php 존재
  • [ ] ZIP으로 패키징 완료
  • [ ] ZIP 파일을 공개 URL로 호스팅 완료
  • [ ] download_url 브라우저에서 직접 접속하여 다운로드 확인
  • [ ] 미리보기 이미지(preview_url) 준비 (선택, 권장)


10.2 등록 폼 입력 체크리스트

  • [ ] 종류: skin 선택
  • [ ] 폴더명: 영문•숫자•하이픈만, 다른 스킨과 중복 없는 고유한 이름
  • [ ] 버전: skin.json의 version과 동일
  • [ ] 이름: 사용자가 이해하기 쉬운 명칭
  • [ ] 다운로드 URL: https://... 로 시작하는 ZIP 직접 URL
  • [ ] 설명: 주요 기능 3~5가지 포함
  • [ ] 태그: 검색에 도움되는 키워드 3개 이상
  • [ ] 카테고리: board 선택 (게시판 스킨의 경우)


10.3 등록 후 확인 체크리스트

  • [ ] "마켓 등록 완료" 성공 메시지 확인
  • [ ] unique_id 기록 (업데이트•삭제 시 필요)
  • [ ] 마켓 탐색 탭에서 내 스킨이 검색되는지 확인
  • [ ] 스킨 카드에 미리보기 이미지 표시 확인
  • [ ] 테스트 사이트에서 설치 버튼 클릭 후 정상 설치 확인
  • [ ] 설치 후 boards/skins/{폴더명}/ 폴더 생성 확인
  • [ ] 게시판에 스킨 적용 후 목록•상세 페이지 정상 동작 확인


11장. 자주 묻는 질문 (FAQ)

Q1. 스킨 파일을 수정했는데 해시가 바뀌었다고 합니다. 어떻게 해야 하나요?

파일 내용이 변경되면 ZIP 파일의 SHA-256 해시가 달라집니다. 마켓에 업데이트 등록을 해서 새 해시를 저장해야 합니다. 버전도 함께 올려주세요.

Q2. 무료로 등록했는데 나중에 유료로 전환할 수 있나요?

업데이트 등록 시 is_paid=1, price, purchase_url을 설정하면 유료로 전환됩니다. 단, 기존에 설치한 사용자는 계속 사용 가능합니다.


Q3. 같은 스킨을 여러 버전으로 등록할 수 있나요?

folder_name이 같으면 하나의 스킨으로 관리됩니다. 버전만 다르게 등록하면 업데이트 처리됩니다. 완전히 다른 스킨을 만들려면 다른 folder_name을 사용하세요.


Q4. 마켓에 등록 후 설치자에게 업데이트 알림이 가나요?

현재 버전에서는 자동 업데이트 알림 기능은 없습니다. 업데이트된 버전을 마켓에 재등록하면 마켓 카드에 새 버전이 표시되고, 사용자가 재설치하는 방식으로 업데이트합니다.


Q5. download_url을 GitHub로 사용할 수 있나요?

GitHub Releases의 직접 다운로드 URL을 사용할 수 있습니다. GitHub Releases에서 파일을 첨부하면 https://github.com/{user}/{repo}/releases/download/v1.0.0/{파일명}.zip 형식의 URL이 생성됩니다. 이 URL을 그대로 사용하면 됩니다.


Q6. ZipArchive가 없는 저가형 호스팅에서도 설치가 되나요?

네, 됩니다. DxMarket 클래스는 ZipArchive가 없는 환경을 위해 순수 PHP ZIP 파서를 내장하고 있습니다. Deflate(Method 8)와 비압축(Method 0) 방식을 지원하므로 일반적인 ZIP 파일은 모두 해제 가능합니다.


Q7. 스킨 카드에 미리보기 이미지를 넣으려면 어떻게 해야 하나요?

마켓 등록 폼의 "미리보기 이미지 URL" 필드에 스크린샷 이미지의 공개 URL을 입력하면 됩니다. 권장 크기는 가로 640px 이상, 세로 400px 내외의 JPG 또는 PNG 이미지입니다. 마켓 카드에서 160px 높이로 object-fit:cover 방식으로 표시됩니다.


Q8. 개발자 키를 잃어버렸습니다. 어떻게 하나요?

DXCMS 관리자 → DX마켓 → 개발자 탭에서 현재 저장된 키를 복사할 수 있습니다. 키가 완전히 분실되었다면 designonex.com에서 새 키를 재발급 후 DXCMS에서 교체하세요.

댓글0

로그인 후 댓글을 작성할 수 있습니다.
3.8 Extend 구조 코어 수정 없이 CMS를 확장하는 방법 2026.05.02 8. 플러그인 플러그인 DX마켓 등록 2026.05.01 8. 플러그인 플러그인 제작 2026.05.01 8. 플러그인 플러그인 구조 2026.05.01 7. 테마 테마 DX마켓 등록 2026.05.01 7. 테마 테마 제작 2026.05.01 7. 테마 테마 구조 2026.05.01 6. 게시판 스킨 DX마켓 등록 2026.05.01 6. 게시판 게시판 스킨 제작 2026.05.01 6. 게시판 댓글 및 답글 구조 2026.05.01 6. 게시판 게시판 구조 2026.05.01 5. 관리자 기능 사용법 DX 마켓 2026.04.21 5. 관리자 기능 사용법 사이트 설정 2026.04.21 5. 관리자 기능 사용법 소셜 로그인 2026.04.21 5. 관리자 기능 사용법 멀티사이트 2026.04.21 5. 관리자 기능 사용법 테마 2026.04.21 5. 관리자 기능 사용법 플러그인 2026.04.21 5. 관리자 기능 사용법 실시간 소켓 2026.04.21 5. 관리자 기능 사용법 다운로드 통계 2026.04.21 5. 관리자 기능 사용법 통계 2026.04.21
31
전체 회원
503
전체 게시글
770
전체 댓글
441
오늘 방문
33,173
전체 방문
2
현재 접속
인기글 7일 이내
최신글
최신댓글
목록