회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
로그인 회원가입
고객센터
7. 테마

테마 DX마켓 등록

D DX
2026.05.01 01:36(수정됨) 118 0

1장. DX마켓 테마 등록 개요

DX마켓(DX Market)은 DXCMS용 테마•스킨•플러그인을 개발자가 등록하고 전 세계 사용자가 설치하는 중앙 배포 플랫폼입니다. 테마는 중앙서버(designonex.com)에 메타 정보와 SHA-256 해시를 등록하고, 실제 파일은 개발자 서버에서 직접 배포합니다. 사용자가 설치 버튼을 누르면 DXCMS가 개발자 서버에서 ZIP을 직접 내려받아 해시 검증 후 themes/{폴더명}/ 에 자동 설치합니다.


1.1 테마 등록의 두 가지 경로

DXCMS에서 테마를 마켓에 올리는 방법은 두 가지입니다. 상황에 맞게 선택하세요.
 
방법 설명 및 특징
관리자 → 테마 관리 → 마켓 공유 버튼 DXCMS 관리자 화면에서 직접 공유. theme.json의 name·version·description을 자동으로 읽어서 전송. 가장 빠른 방법
관리자 → DX마켓 → 개발자 탭 → 직접 등록 스킨·플러그인과 동일한 방법. 모든 필드를 직접 입력. item_type = theme 로 등록

💡 권장 방법
테마는 ① 관리자 → 테마 관리 → "마켓에 테마 공유" 버튼을 사용하는 것이 가장 편리합니다.
theme.json에 정의된 name, version, description을 자동으로 읽어서 전송하므로
별도로 필드를 채울 필요 없이 추가 정보(미리보기 URL, 태그, 카테고리)만 입력하면 됩니다.


1.2 시스템 아키텍처

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


1.3 전체 등록•설치 흐름

  1. 개발자: designonex.com에서 회원가입 후 개발자 키(dxd_...) 발급
  2. 개발자: 테마를 ZIP으로 패키징하여 자신의 서버에 업로드
  3. 개발자: DXCMS 관리자 → 테마 관리에서 "마켓에 테마 공유" 버튼 클릭
  4. 중앙서버: download_url에서 ZIP 다운로드 후 SHA-256 해시 생성•저장
  5. 중앙서버: 마켓 목록에 테마 공개
  6. 사용자: 마켓 탐색 탭에서 테마 검색 후 설치 버튼 클릭
  7. DXCMS: download_url에서 ZIP 직접 다운로드 → SHA-256 해시 검증
  8. DXCMS: themes/{folder_name}/ 에 압축 해제 → theme.json + layout/main.php 검증
  9. 사용자: 관리자 → 테마 관리에서 설치된 테마 활성화

🔒 보안 설계
중앙서버는 메타데이터와 해시만 저장 — 실제 파일은 보관하지 않습니다.
SHA-256 해시로 파일 무결성 검증 — 변조된 파일은 설치 거부됩니다.
ZIP 매직 바이트(PK) 검증 — 유효하지 않은 파일은 설치되지 않습니다.
설치 후 theme.json + layout/main.php 필수 파일 검증 — 둘 중 하나라도 없으면 자동 롤백.


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


2.1 개발자 키란

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

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


2.2 개발자 키 발급 및 저장 단계

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


2.3 개발자 키와 테마 공유의 관계

관리자 → 테마 관리의 "마켓에 테마 공유" 버튼을 사용할 때는 내부적으로 DxMarket::shareTheme()가 저장된 개발자 키를 자동으로 읽어서 사용합니다. 별도로 키를 입력할 필요가 없습니다. 단, 개발자 키가 DXCMS에 저장되어 있지 않으면 공유 버튼을 클릭해도 "먼저 관리자 > DesignOneX 마켓에서 사이트를 등록하세요." 오류가 발생합니다.


3장. 테마 ZIP 패키징


3.1 ZIP 필수 구조

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

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

  theme.json           ← 테마 메타 정보 (앵커 파일, ZIP 내 위치 감지에 사용)
  layout/main.php      ← 전체 레이아웃 파일


3.2 ZIP 내부 구조 두 가지 방식


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

my-theme.zip
  └── my-theme/               ← 폴더명은 아무거나 가능 (자동 감지)
       ├── theme.json         ← 앵커 파일 (이 파일로 prefix 자동 감지)
       ├── layout/
       │     └── main.php    ← 필수
       ├── board/
       │     ├── list.php
       │     └── view.php
       ├── page/
       │     └── home.php
       ├── parts/
       │     └── pagination.php
       ├── assets/
       │     ├── css/
       │     └── js/
       └── style.css


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

my-theme.zip
  ├── theme.json              ← ZIP 루트에 바로 위치
  ├── layout/
  │     └── main.php
  ├── board/
  ├── assets/
  └── style.css

💡 ZIP 생성 팁
Windows: 테마 폴더 우클릭 → "압축(ZIP) 폴더에 보내기" (방식 A)
macOS: 폴더 우클릭 → "압축" (방식 A)
Linux: zip -r my-theme.zip my-theme/ (방식 A)
주의: __MACOSX/ 폴더나 .DS_Store 파일이 포함되어도 설치에는 영향 없습니다.
주의: node_modules/, .git/ 등 불필요한 폴더는 반드시 제외하세요.


3.3 theme.json 권장 내용

마켓 등록 전 theme.json에 아래 정보를 충실히 작성하면 관리자 → 테마 관리 화면에서 자동으로 읽혀 마켓 공유 시 활용됩니다.
{
    "name": "내 테마 이름",
    "version": "1.0.0",
    "author": "개발자 이름",
    "description": "테마에 대한 상세 설명",
    "preview": "assets/preview.png",
    "supports": ["board", "page", "gallery"],
    "options": {
        "primary_color": {
            "type": "color",
            "label": "기본 색상",
            "default": "#3b82f6"
        }
    }
}


3.4 미리보기 이미지 준비

마켓 카드에 표시될 스크린샷 이미지입니다. theme.json의 preview 필드에 assets/preview.png 경로를 적어두면, 마켓 공유 시 미리보기 이미지 URL 필드에 자동으로 채워지는 역할을 합니다(실제 URL은 공개 URL을 직접 입력).
 
항목 권장 사항
이미지 크기 가로 1280px × 세로 800px 이상 (16:10 비율 권장)
파일 형식 JPG 또는 PNG (WebP도 지원)
파일 크기 1MB 이하 권장 (로딩 속도 최적화)
내용 실제 사이트 화면 캡처 (라이트 + 다크 모드 각각 준비 권장)
호스팅 공개 URL로 접근 가능한 외부 서버에 업로드


3.5 파일 호스팅

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

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


4장. 마켓 공유 — 관리자 → 테마 관리 방법 (권장)

가장 간편한 방법입니다. 테마 폴더의 theme.json에서 이름•버전•설명을 자동으로 읽어오므로 추가 정보만 입력하면 됩니다.


4.1 사전 조건 확인

  • themes/ 폴더에 테마 폴더가 업로드되어 있을 것
  • theme.json에 name, version, description이 작성되어 있을 것
  • layout/main.php 파일이 존재할 것
  • ZIP 파일이 공개 URL로 호스팅되어 있을 것
  • 개발자 키(dxd_...)가 DXCMS에 저장되어 있을 것


4.2 단계별 공유 절차

  1. 관리자 → 테마 관리 메뉴 클릭
  2. 테마 목록에서 공유할 테마 카드 확인
  3. 테마 카드 하단의 "마켓에 테마 공유" 보라색 버튼 클릭
  4.  마켓 공유 모달 팝업 열림 — "Selected Theme: {이름} (/{폴더명})" 상단에 표시
  5. 아래 필드 입력 (4.3 참고)
  6.  "마켓 공유 승인 요청" 버튼 클릭
  7. 성공 시: "테마 [{폴더명}] 가 마켓에 공유되었습니다." 초록 메시지 확인
  8. 테마 카드 하단이 "✓ 공유중 (uid 앞 4자)" 초록 배지로 변경됨


4.3 마켓 공유 모달 필드 상세

필드명 필수 설명 및 입력 예시
공개 방식 필수 FREE(무료) 또는 PAID(유료) 선택
판매 가격 유료 시 숫자로 입력. 예: 29000 (원), 9.99 (달러). 단위: KRW 또는 USD
구매 페이지 URL 유료 시 결제 페이지 URL. 사용자가 "구매" 버튼 클릭 시 이동
미리보기 이미지 URL 권장 JPG/PNG 공개 URL. 비워두면 theme.json의 preview 파일 경로 사용
카테고리 권장 블로그형 / 쇼핑몰형 / 포트폴리오 / 커뮤니티형 중 선택
태그 권장 검색 키워드. 쉼표 구분. 예: 반응형, 미니멀, 다크모드
공개용 설명글 권장 마켓 사용자에게 보여질 테마 소개. 주요 기능 3~5가지 포함 권장

💡 카테고리 선택 기준
블로그형    — 개인 블로그, 뉴스, 매거진 레이아웃
쇼핑몰형   — 상품 목록, 장바구니, 결제 연동 레이아웃
포트폴리오 — 작품 전시, 크리에이터, 갤러리 중심 레이아웃
커뮤니티형 — 게시판, 포럼, 커뮤니티 포털 레이아웃


4.4 공유 후 처리 흐름

  1. DXCMS가 share_theme POST 요청을 처리
  2. DxMarket::shareTheme() 가 theme.json을 읽어 name•version•description 자동 추출
  3. download_url은 직접 입력된 값 사용 (theme.json에 없으므로 별도 입력 필요)
  4. 중앙서버 /market_register.php에 POST — item_type: "theme" 로 전송
  5. 중앙서버가 download_url에서 ZIP 다운로드 → SHA-256 해시 계산•저장
  6. unique_id 발급 — settings 테이블에 market_theme_shared_{폴더명} = "1", market_theme_uid_{폴더명} = unique_id 저장
  7. 마켓 목록에 테마 공개

공유 성공 표시
테마 카드 하단 버튼이 다음과 같이 변경됩니다:
  ✓ 공유중 (uid앞4자)  [초록 배지]  [X 버튼 — 공유 해제]

settings 테이블에 다음 키가 저장됩니다:
  market_theme_shared_{폴더명} = "1"
  market_theme_uid_{폴더명}    = "theme_a1b2c3d4" (unique_id)


5장. DX마켓 개발자 탭에서 직접 등록

관리자 → DX마켓 → 개발자 탭에서 테마를 직접 등록할 수도 있습니다. 스킨•플러그인과 동일한 폼을 사용하며 item_type을 "theme"로 선택합니다.


5.1 접근 경로

  1. 관리자 → DX마켓 메뉴 클릭
  2. "개발자" 탭 클릭 (개발자 키가 저장되어 있어야 활성화)
  3. "플러그인/테마 마켓 등록" 섹션 확인


5.2 등록 폼 필드 (테마 전용 주의사항)

필드명 필수 테마 등록 시 주의사항
종류 (item_type) 필수 반드시 "theme" 선택. plugin·skin과 다름
폴더명 (folder_name) 필수 themes/ 아래에 설치될 폴더명. 예: my-theme, dark-portfolio
버전 (version) 필수 theme.json의 version과 반드시 일치시킬 것
이름 (name) 필수 마켓에 표시될 테마 이름. theme.json의 name 값
카테고리 권장 blog·shop·portfolio·community 중 선택 (theme 전용 카테고리)
다운로드 URL 필수 ZIP 파일 직접 URL. HTTPS 권장
미리보기 이미지 URL 권장 마켓 카드에 표시될 스크린샷 이미지 공개 URL
설명 권장 테마 기능과 특징을 3~5줄로 설명
태그 권장 검색 키워드. 쉼표 구분. 예: 다크모드,반응형,커뮤니티
변경사항 업데이트 시 버전 업데이트 내용. 예: 다크모드 지원 추가, 모바일 최적화
유료 여부 선택 체크 시 가격·통화·구매 URL 추가 입력
최소 CMS 버전 선택 호환 최소 DXCMS 버전. 예: 8.0.0
최소 PHP 버전 선택 기본 5.6. PHP 8.x 전용이면 8.0 입력


5.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: theme_... / hash: ..." 메시지 표시

✅ 등록 성공 응답 예시
마켓 등록 완료 — unique_id: theme_a1b2c3d4 / hash: e5f6a7b8c9d0...

→ unique_id: 마켓에서 이 테마를 식별하는 고유 ID (업데이트•삭제 시 필요)
→ hash: ZIP 파일의 SHA-256 해시 앞 16자리 (무결성 검증에 사용)


6장. 버전 업데이트 등록


6.1 업데이트가 필요한 경우

  • 테마 파일 수정 — layout/main.php, board/list.php, style.css 등 내용이 변경된 경우
  • 새 기능 추가 — board_latest 스킨, 파셜, 에셋 파일 추가
  • 버그 수정 — 오류 수정 후 재배포
  • 보안 패치 — 보안 취약점 수정
  • options 추가 — theme.json의 options에 새 설정 항목 추가


6.2 업데이트 등록 절차

  • 테마 파일 수정 후 theme.json의 version 값 올림 (예: 1.0.0 → 1.1.0)
  • 새 ZIP 파일로 다시 패키징
  • 개발자 서버의 ZIP 파일 교체 (URL이 같아도 내용이 달라지면 새 해시 생성)
  • 관리자 → 테마 관리에서 해당 테마 카드 확인
  • 이미 공유 중이면 "✓ 공유중" 배지 옆 X 버튼으로 일단 공유 해제
  • 다시 "마켓에 테마 공유" 버튼 클릭 → 새 버전 정보로 재등록
  • "테마 [{폴더명}] 가 마켓에 공유되었습니다." 확인

⚠️ 업데이트 시 반드시 버전을 올려야 합니다
동일 folder_name으로 다시 등록하면 중앙서버가 업데이트(UPDATE)로 처리합니다.
단, theme.json의 version이 이전과 같으면 중앙서버가 업데이트를 거부할 수 있습니다.
download_url이 동일해도 파일 내용이 변경됐으면 새 해시로 자동 갱신됩니다.
업데이트 후 기존 설치자는 마켓에서 재설치하거나 수동으로 파일을 교체해야 합니다.


6.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: 레이아웃 구조 변경, 하위 호환 불가


7장. 마켓 공유 해제


7.1 공유 해제 절차

등록된 테마를 마켓 목록에서 제거할 수 있습니다. 해제 후에는 새 사용자가 검색•설치할 수 없지만, 기존 설치자에게는 영향이 없습니다.
  1. 관리자 → 테마 관리 메뉴 클릭
  2. 공유 해제할 테마 카드에서 "✓ 공유중" 배지 옆 빨간 X 버튼 클릭
  3. 폼 POST 처리 → DxMarket::unshareTheme() 호출
  4. "테마 [{폴더명}] 공유가 비활성화되었습니다." 메시지 확인
  5. settings 테이블의 market_theme_shared_{폴더명} 값이 "0"으로 변경됨
  6. 테마 카드 하단이 다시 "마켓에 테마 공유" 버튼으로 변경


7.2 공유 해제 후 재공유

공유를 해제했다가 다시 공유하면 새 unique_id가 발급됩니다. 이전 unique_id로는 더 이상 접근할 수 없으므로, 재공유 후에는 새 unique_id를 별도로 메모해두세요.


8장. 사용자의 테마 설치 흐름


8.1 마켓 탐색 화면

사용자는 관리자 → DX마켓 → 마켓 탐색 탭에서 테마를 검색하고 설치할 수 있습니다.
 
UI 요소 기능
종류 필터 "테마" 선택 시 item_type=theme 항목만 표시
카테고리 필터 블로그형·쇼핑몰형·포트폴리오·커뮤니티형으로 필터
검색창 테마 이름, 태그, 작성자로 검색
정렬 최신순·인기순·평점순
테마 카드 미리보기 이미지, 이름, 버전, 제작자, 평점, 다운로드 수, 설명 표시
설치 버튼 무료: 즉시 설치. 유료: 구매 페이지 이동. 이미 설치: "✓ 설치됨" 표시


8.2 설치 버튼 클릭 후 내부 처리

  1. confirm("테마를 설치하시겠습니까?") 확인창
  2. DXCMS → 중앙서버 /market_download.php 에 unique_id 전송
  3. 중앙서버가 download_url + file_hash + folder_name + version 반환
  4. DXCMS가 download_url에서 ZIP 직접 다운로드 (타임아웃 60초)
  5. SHA-256 해시 계산 → file_hash와 비교 — 불일치 시 설치 중단
  6. ZIP 매직 바이트(PK) 검증 — 유효하지 않으면 중단
  7. data/cache/에 임시 파일 저장 (_mkt_{md5}.zip)
  8. item_type=theme 이므로 themes/{folder_name}/ 에 압축 해제
  9. 필수 파일 검증: theme.json + layout/main.php 존재 확인
  10. 검증 실패 시 themes/{folder_name}/ 폴더 자동 삭제 (롤백)
  11. 임시 ZIP 파일 삭제
  12. "folder_name v1.0.0 설치 완료." 메시지 표시


8.3 설치 후 테마 활성화

  1. 관리자 → 테마 관리 클릭
  2. 새로 설치된 테마 카드 확인
  3. "지금 활성화하기" 버튼 클릭
  4. settings 테이블의 theme 키가 해당 폴더명으로 저장
  5. 사이트에서 새 테마 즉시 확인


8.4 설치 실패 대응

오류 메시지 원인 및 해결
파일 무결성 검증 실패 ZIP이 변조됨. 개발자에게 신규 업데이트 요청
"folder_name" 폴더가 이미 존재 이미 설치된 테마. themes/ 에서 폴더 삭제 후 재시도
필수 파일 검증 실패 ZIP에 theme.json 또는 layout/main.php 누락. 개발자에게 문의
data/cache/ 쓰기 권한 없음 data/cache/ 권한을 755 이상으로 변경
파일 다운로드 실패 개발자 서버 오프라인 또는 URL 변경. 개발자에게 문의


9장. 중앙서버 API 레퍼런스 (테마 전용)


9.1 테마 등록 요청 payload

POST /market_register.php 로 전송되는 JSON 본문 (테마 기준):
{
  "item_type":    "theme",                          // 필수: theme 고정
  "folder_name":  "my-theme",                       // 필수: themes/ 아래 설치 폴더명
  "name":         "내 테마",                          // 필수: 표시 이름
  "version":      "1.0.0",                          // 필수: 버전 (theme.json과 일치)
  "author":       "개발자명",                         // 선택
  "author_url":   "https://mysite.com",             // 선택
  "homepage_url": "https://mysite.com/theme",       // 선택
  "download_url": "https://mysite.com/theme.zip",  // 필수: ZIP 직접 URL
  "preview_url":  "https://mysite.com/preview.png", // 권장: 미리보기 이미지
  "category":     "community",                      // 선택: blog|shop|portfolio|community
  "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 설치 검증 로직 (item_type=theme)

검증 단계 내용
앵커 파일 감지 ZIP 내에서 theme.json 파일 위치로 압축 prefix 자동 감지
설치 경로 themes/{folder_name}/ 에 압축 해제 (plugins/ 아님)
필수 파일 검증 themes/{folder_name}/theme.json + layout/main.php 존재 확인. 둘 중 하나라도 없으면 폴더 삭제 후 false 반환
ZipArchive 우선 php_zip 확장이 있으면 ZipArchive 사용. 없으면 순수 PHP 파서로 폴백


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


10.1 등록 전 체크리스트

  • [ ] designonex.com 회원가입 및 개발자 키(dxd_...) 발급 완료
  • [ ] DXCMS 관리자 → DX마켓 → 개발자 키 저장 완료
  • [ ] theme.json에 name, version, author, description 작성 완료
  • [ ] layout/main.php 파일 존재 확인
  • [ ] $dx_content 출력 구문이 layout/main.php에 포함되어 있는지 확인
  • [ ] CSRF 토큰 meta 태그 및 dx_run_hook 3개 포함 확인
  • [ ] ZIP으로 패키징 완료 (theme.json + layout/main.php 포함 검증)
  • [ ] ZIP 파일을 공개 URL로 호스팅 완료
  • [ ] download_url 브라우저에서 직접 접속하여 ZIP 다운로드 확인
  • [ ] 미리보기 이미지(preview_url) 준비 완료 (권장)


10.2 등록 폼 입력 체크리스트

  • [ ] 공개 방식: FREE 또는 PAID 선택
  • [ ] 미리보기 이미지 URL: 공개 접근 가능한 URL 입력
  • [ ] 카테고리: 테마 성격에 맞는 카테고리 선택
  • [ ] 태그: 검색에 도움되는 키워드 3개 이상 (쉼표 구분)
  • [ ] 공개용 설명글: 주요 기능 3~5가지 포함


10.3 등록 후 확인 체크리스트

  • [ ] "테마 공유 완료" 초록 메시지 확인
  • [ ] 테마 카드가 "✓ 공유중" 배지로 변경 확인
  • [ ] 마켓 탐색 탭에서 "테마" 필터로 내 테마 검색 확인
  • [ ] 테마 카드에 미리보기 이미지 표시 확인
  • [ ] 테스트 DXCMS에서 설치 버튼 클릭 → 정상 설치 확인
  • [ ] 설치 후 themes/{폴더명}/ 폴더 생성 확인
  • [ ] 테마 활성화 후 사이트 정상 동작 확인


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

Q1. 관리자 → 테마 관리의 공유 버튼을 눌렀을 때 download_url을 어디에 입력하나요?

마켓 공유 모달 팝업에는 download_url 입력란이 별도로 없습니다. shareTheme() 함수 내부에서 theme.json의 정보를 읽되, download_url은 별도로 전달해야 합니다. 현재 구현에서는 DxMarket::shareTheme()가 theme.json의 정보를 읽고 마켓 공유 모달에서 입력한 미리보기 URL•카테고리•태그•설명만 추가 전송합니다. download_url을 별도로 지정하려면 관리자 → DX마켓 → 개발자 탭의 직접 등록 폼을 사용하세요.


Q2. 같은 테마를 버전만 올려서 다시 등록할 수 있나요?

네. folder_name이 같으면 중앙서버가 업데이트(UPDATE)로 처리합니다. 단, version이 이전과 달라야 합니다. 버전이 같으면 업데이트를 거부할 수 있습니다. 업데이트 시 관리자 → 테마 관리에서 "공유 해제 → 재공유" 순서로 진행하세요.


Q3. 테마와 스킨을 동시에 마켓에 올릴 수 있나요?

네, 각각 별도로 등록해야 합니다. 테마는 themes/ 에, 스킨은 boards/skins/ 에 설치되므로 item_type을 각각 theme, skin으로 구분하여 등록합니다. 하나의 ZIP에 테마와 스킨을 같이 넣을 수는 없습니다.


Q4. 미리보기 이미지를 theme.json의 preview 필드로 지정하면 자동으로 사용되나요?

theme.json의 preview 필드(예: "assets/preview.png")는 관리자 테마 목록 화면에서 로컬 미리보기로 표시됩니다. 마켓 공유 시 preview_url 필드에는 외부에서 접근 가능한 공개 URL을 별도로 입력해야 합니다. 비워두면 마켓 카드에 기본 이미지가 표시됩니다.


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

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


Q6. 테마 설치 후 "필수 파일 검증 실패"가 발생합니다.

theme.json 또는 layout/main.php 파일이 ZIP에 없거나 경로가 잘못된 경우입니다. ZIP을 직접 열어 theme.json과 layout/main.php가 올바른 위치에 있는지 확인하세요. 폴더 포함 압축(방식 A)의 경우 my-theme/layout/main.php 경로여야 하며, DxMarket이 앵커 파일(theme.json)로 prefix를 자동 감지합니다.


Q7. 유료 테마로 등록했는데 사용자에게 어떻게 보이나요?

마켓 카드에 가격이 표시되고 "설치" 버튼 대신 "구매" 버튼이 표시됩니다. 구매 버튼 클릭 시 purchase_url로 이동합니다. 구매 후 수동으로 ZIP을 제공하거나, 별도의 라이선스 키 시스템을 구성해야 합니다. DXCMS는 결제 처리를 직접 하지 않으며 외부 결제 시스템과 연동합니다.


Q8. 마켓에 등록된 테마 카드를 수정(이름•설명 변경)하려면?

관리자 → 테마 관리에서 공유 해제(X 버튼) 후 theme.json을 수정하고 다시 "마켓에 테마 공유"를 클릭하면 됩니다. 또는 관리자 → DX마켓 → 개발자 탭에서 동일 folder_name으로 다시 등록하면 UPDATE로 처리됩니다.

댓글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일 이내
최신글
최신댓글
목록