회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
로그인 회원가입
고객센터
8. 플러그인

플러그인 DX마켓 등록

D DX
2026.05.01 01:39(수정됨) 140 0

1장. DX마켓 플러그인 등록 개요

DX마켓(DX Market)은 DXCMS용 플러그인•테마•스킨을 개발자가 등록하고 사용자가 설치하는 중앙 배포 플랫폼입니다. 플러그인을 마켓에 올리면 전 세계 DXCMS 사용자가 관리자 화면에서 검색하고 한 번의 클릭으로 설치할 수 있습니다.


1.1 플러그인 등록의 두 가지 경로

DXCMS에서 플러그인을 마켓에 올리는 방법은 성격이 다른 두 가지 경로가 있습니다. 반드시 차이를 이해하고 목적에 맞는 방법을 선택하세요.
 
경로 특징 및 설명
관리자 → 플러그인 → 마켓 공유 버튼 DXCMS 자체 공유 시스템. 별도 개발자 키 불필요. share_key(32자 랜덤 hex)가 dx_plugins 테이블에 저장됨. 설명·태그만 입력하면 즉시 공유 활성화. 단, DX 중앙서버 마켓 목록에 노출되지 않고 share_key를 아는 사용자만 설치 가능
관리자 → DX마켓 → 개발자 탭 → 직접 등록 중앙서버(designonex.com) 공개 마켓에 등록. 개발자 키(dxd_...) 필수. unique_id 발급. SHA-256 해시 검증. 마켓 탐색 탭에서 전체 공개. 설치자 수·평점 집계

🔑 두 경로의 핵심 차이
경로 ①: DXCMS 내부 공유 키(share_key) — 개발자 키 불필요, 내부/소규모 배포에 적합
  → dx_plugins 테이블의 is_shared=1, share_key="{32자hex}" 로 저장
  → 해당 share_key를 통해 접근한 사용자만 설치 가능

경로 ②: 중앙서버 공개 마켓 등록 — 개발자 키 필수, 전체 공개 마켓에 노출
  → unique_id(예: plugin_a1b2c3d4) 발급, SHA-256 파일 해시 검증
  → 마켓 탐색 탭에서 모든 DXCMS 사용자가 검색•설치 가능


1.2 시스템 아키텍처 (경로 ② 기준)

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


1.3 전체 등록•설치 흐름 (경로 ②)

  1. 개발자: designonex.com에서 회원가입 후 개발자 키(dxd_...) 발급
  2. 개발자: 플러그인을 ZIP으로 패키징하여 공개 URL로 호스팅
  3. 개발자: DXCMS 관리자 → DX마켓 → 개발자 탭에서 정보 입력 후 등록
  4. 중앙서버: download_url에서 ZIP 다운로드 후 SHA-256 해시 계산•저장
  5. 중앙서버: unique_id 발급, 마켓 목록에 공개
  6. 사용자: 관리자 → DX마켓 → 탐색 탭에서 검색 후 설치 클릭
  7. DXCMS: download_url에서 ZIP 직접 다운로드 → SHA-256 해시 검증
  8. DXCMS: plugins/{folder_name}/ 에 압축 해제 → plugin.php + manifest.php 검증
  9. 사용자: 관리자 → 플러그인 → 모듈 설정에서 플러그인 활성화


2장. 경로 ① — 플러그인 관리 내 공유 버튼

별도 개발자 키 없이 내 DXCMS 설치 환경에서 바로 플러그인을 공유할 수 있는 가장 빠른 방법입니다. 소규모 배포, 팀 내부 공유, 테스트 배포에 적합합니다.


2.1 사전 조건

  • plugins/ 폴더에 플러그인 폴더가 존재할 것
  • manifest.php에 name, version, description이 작성되어 있을 것
  • plugin.php 파일이 존재할 것
  • 별도 개발자 키(dxd_...) 불필요


2.2 공유 활성화 단계별 절차

  1. 관리자 → 플러그인 메뉴 클릭
  2. 공유할 플러그인 카드 오른쪽 상단의 "🌐 공유" 버튼(보라색) 클릭
  3. "DesignOneX 마켓에 공유 설정" 패널이 카드 아래 펼쳐짐
  4. "공개용 짧은 설명" 입력 — 플러그인 핵심 기능을 한 줄로 설명
  5. "태그 키워드" 입력 — 쉼표로 구분 (예: 알림, 슬랙, 게시판)
  6. "마켓 공유 시작하기" 보라색 버튼 클릭
  7. "공유가 활성화되었습니다." 초록 메시지 확인
  8. 플러그인 카드 상태: "✓ 마켓에 정상적으로 공개되었습니다." 패널로 변경


2.3 공유 활성화 시 내부 처리

toggle_share POST 요청이 처리되는 방식입니다.
// admin/plugins/index.php 내부 처리 (action = toggle_share, is_shared = 1)

// 1. 기존 share_key 조회 (있으면 재사용, 없으면 신규 생성)
$existing = $db->row("SELECT share_key FROM dx_plugins WHERE directory=?", [$dir]);
$shareKey = ($existing && $existing["share_key"])
    ? $existing["share_key"]
    : dx_random_hex(32);  // 64자 hex 문자열 생성

// 2. dx_plugins 테이블 업데이트
$db->query(
    "UPDATE dx_plugins SET
     is_shared=1,
     share_key=?,
     shared_at=IF(shared_at IS NULL, NOW(), shared_at)
     WHERE directory=?",
    [$shareKey, $dir]
);

// 3. 결과: dx_plugins 테이블
// directory  : "my-plugin"
// is_shared  : 1
// share_key  : "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0a1b2c3d4e5f6a7b8c9d0e1f2"
// shared_at  : "2026-05-10 12:34:56" (최초 공유 시각, 이후 유지)


2.4 공유 후 상태 확인

UI 요소 상태
"마켓에 정상적으로 공개되었습니다." 패널 공유 활성화 확인 (초록 체크 아이콘)
키: {share_key 앞 32자} share_key 일부 표시 (보안상 전체 미표시)
"나의 등록물 보기" 링크 관리자 → DX마켓 → 나의 등록물 탭으로 이동
"공유 중단" 빨간 버튼 클릭 시 confirm 후 is_shared=0으로 변경


2.5 공유 설명•태그 수정

공유 활성화 후 설명이나 태그를 수정하려면 save_share_info 액션을 사용합니다.
  1. 관리자 → 플러그인 → 해당 플러그인 카드의 "공유 설정" 버튼 클릭
  2. 설명 또는 태그 수정 후 "정보 저장" 버튼 클릭
  3. dx_plugins.share_desc, share_tags 컬럼이 업데이트됨


2.6 공유 해제

  • 플러그인 카드의 "공유 중단" 버튼 클릭
  • "공유를 중지하시겠습니까?" confirm 확인
  • dx_plugins.is_shared = 0 으로 변경
  • "공유가 비활성화되었습니다." 메시지 확인
  • share_key는 DB에 유지됨 — 재공유 시 동일 키 사용


3장. 경로 ② 준비 — 개발자 키 발급

중앙서버 공개 마켓에 플러그인을 등록하려면 dxd_ 접두사의 개발자 키가 필요합니다.


3.1 개발자 키 형식

형식: dxd_{영숫자}_{32자 이상 랜덤 문자열}
예시: dxd_a1b2c3d4_e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0

"dxd_" 접두사가 없는 키는 DXCMS에서 저장을 거부합니다


3.2 개발자 키 발급 단계

  1. designonex.com 접속 → 회원가입 또는 로그인
  2. 마이페이지 → developer-key.php 페이지 접속
  3. 사이트 도메인, URL, 개발자 이름, 이메일 입력 후 발급 요청
  4. 발급된 dxd_... 형식의 키 복사


3.3 DXCMS에 개발자 키 저장

  1. 관리자 → DX마켓 메뉴 클릭
  2. "개발자" 탭 클릭
  3. "발급받은 개발자 키" 입력란에 dxd_... 키 붙여넣기
  4. "키 저장" 버튼 클릭
  5. settings 테이블에 market_dev_key = "{dxd_...}" 저장됨
  6. 탭 상단에 "개발자 키가 등록되어 있습니다." 초록 배지 확인
  7. 개발자 키가 등록되면 "플러그인/테마 마켓 등록" 폼이 활성화됨

⚠️ 키 교체 시 주의
이미 등록된 키가 있으면 버튼이 "키 교체"로 표시됩니다.
키를 교체해도 이전 키로 등록된 아이템은 계정이 동일하면 계속 관리 가능합니다.
키가 유출되었거나 만료된 경우에만 교체하세요.


4장. 플러그인 ZIP 패키징


4.1 ZIP 필수 파일

마켓에 등록하려면 플러그인을 ZIP으로 패키징해야 합니다. 설치 후 아래 2개 파일이 없으면 자동 롤백됩니다.
필수 파일 (없으면 설치 후 자동 롤백됨):

  plugin.php        ← 플러그인 메인 실행 파일 (앵커 파일)
  manifest.php      ← 플러그인 메타 정보


4.2 ZIP 내부 구조 (두 가지 방식)


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

my-plugin.zip
  └── my-plugin/           ← 폴더명 무관 (plugin.php 위치로 자동 감지)
       ├── plugin.php      ← 앵커 파일 (ZIP 내 prefix 자동 감지)
       ├── manifest.php    ← 필수
       ├── assets/
       │     ├── style.css
       │     └── script.js
       ├── admin/
       │     └── settings.php
       └── README.md


방식 B — 루트 압축

my-plugin.zip
  ├── plugin.php      ← ZIP 루트에 바로 위치
  ├── manifest.php
  └── assets/

💡 ZIP 생성 팁
Windows: 플러그인 폴더 우클릭 → "압축(ZIP) 폴더에 보내기" (방식 A)
macOS: 폴더 우클릭 → "압축" (방식 A)
Linux: zip -r my-plugin.zip my-plugin/ (방식 A)
주의: node_modules/, .git/, .DS_Store는 반드시 제외하세요.
주의: 민감 정보(API 키, 비밀번호)가 파일에 하드코딩되어 있지 않은지 확인하세요.


4.3 manifest.php 등록 전 체크

마켓 등록 전 manifest.php에 아래 정보를 충실히 작성하면 마켓 카드에 올바르게 표시됩니다.
<?php
return array(
    "name"        => "My Plugin",      // 마켓 카드 표시 이름 ★확인
    "version"     => "1.0.0",          // 등록 버전과 반드시 일치 ★확인
    "description" => "핵심 기능 설명",  // 마켓 카드 설명 ★확인
    "author"      => "개발자명",
    "author_url"  => "https://mysite.com",
    "type"        => "utility",        // editor|payment|captcha|utility 등
    "tags"        => "알림,슬랙,연동",   // 마켓 검색 태그
    "homepage"    => "https://...",
    "license"     => "MIT",
);


4.4 파일 호스팅

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

⚠️ download_url 주의사항
ZIP 파일을 직접 가리키는 URL이어야 합니다 (HTML 페이지 URL 불가).
URL이 변경되면 마켓에서 업데이트 등록으로 새 URL을 저장하세요.
파일 내용이 변경되면 반드시 버전을 올리고 재등록해야 해시가 갱신됩니다.
중앙서버가 등록 시 URL을 직접 다운로드하므로 등록 전에 URL 접근 가능 여부를 확인하세요.


5장. 경로 ② 등록 — DX마켓 개발자 탭 사용법


5.1 등록 폼 접근

  1. 관리자 → DX마켓 메뉴 클릭
  2. "개발자" 탭 클릭 (개발자 키가 저장된 경우에만 등록 폼 표시)
  3. "플러그인/테마 마켓 등록" 섹션 확인


5.2 등록 폼 필드 전체 상세

필드명 필수 설명 및 입력 예시
종류 (item_type) 필수 plugin 선택. plugin / theme / skin 중 "plugin" 선택
폴더명 (folder_name) 필수 plugins/ 아래에 설치될 폴더명. 영문·숫자·하이픈만. 예: my-awesome-plugin
버전 (version) 필수 시맨틱 버전. manifest.php의 version과 반드시 일치. 예: 1.0.0
이름 (item_name) 필수 마켓 카드에 표시될 플러그인 이름. manifest.php의 name 값
카테고리 권장 board·shop·blog·social·utility·seo·security·etc 중 선택
다운로드 URL 필수 ZIP 파일 직접 URL. 중앙서버가 이 URL에서 파일을 다운로드하여 해시 생성
미리보기 이미지 URL 권장 마켓 카드에 표시될 스크린샷 JPG/PNG 공개 URL
홈페이지 URL 선택 플러그인 공식 페이지, GitHub 등 외부 URL
설명 (description) 권장 플러그인 기능과 특징 3~5줄 설명
태그 (tags) 권장 마켓 검색 키워드. 쉼표 구분. 예: 슬랙,알림,게시판
변경사항 (changelog) 업데이트 시 버전 업데이트 내용. 예: 댓글 알림 추가, 버그 수정
유료 여부 (is_paid) 선택 체크 시 가격·통화·구매 URL 추가 입력
가격 (price) 유료 시 숫자. 예: 29000(KRW) / 9.99(USD)
통화 (price_unit) 유료 시 KRW 또는 USD
구매 URL (purchase_url) 유료 시 결제 페이지 URL. 설치 대신 "구매" 버튼으로 이동


5.3 카테고리 선택 기준

카테고리 적합한 플러그인 유형
board 게시판 기능 확장 (댓글 알림, 공지 배너, 커스텀 필드 등)
shop 쇼핑몰·결제 관련 (PG사 연동, 장바구니, 주문 알림)
blog 블로그 기능 (SEO 메타, 소셜 공유, 관련 글 위젯)
social 소셜 기능 (소셜 로그인, 좋아요, 팔로우, 소셜 공유)
utility 유틸리티 (이메일 알림, SMS, 분석, 스팸 방지, 백업)
seo SEO 도구 (메타 태그, 사이트맵, Open Graph, 구조화 데이터)
security 보안 강화 (2FA, IP 차단, CAPTCHA, 로그인 보호)
etc 위 분류에 해당하지 않는 기타 플러그인


5.4 "마켓에 등록 / 업데이트" 버튼 클릭 후 처리

  1. DXCMS가 입력값을 JSON 배열로 조립
  2. DxMarket::registerItem($devKey, $payload) 호출
  3. 중앙서버 /market_register.php 에 POST (헤더: X-Dev-Key: {dxd_...})
  4. 중앙서버가 dev_key 유효성 검증
  5. 중앙서버가 download_url에서 ZIP 파일 다운로드
  6. SHA-256 해시 계산 후 DB 저장
  7. unique_id 발급 및 마켓 목록 공개
  8. DXCMS 화면에 성공 메시지 표시

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


→ unique_id: 마켓에서 이 플러그인을 식별하는 고유 ID
→ hash: ZIP의 SHA-256 해시 앞 16자리 (무결성 검증용)

⚠️ unique_id를 반드시 기록해두세요 — 업데이트•삭제 시 필요합니다.


5.5 등록 실패 대응

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


6장. 중앙서버 API — 등록 payload 레퍼런스


6.1 플러그인 등록 요청 payload

POST /market_register.php 로 전송되는 JSON 본문 (플러그인 기준):
{
  "item_type":    "plugin",                          // 고정: plugin
  "folder_name":  "my-awesome-plugin",               // 필수: 설치 폴더명
  "name":         "My Awesome Plugin",               // 필수: 표시 이름
  "version":      "1.0.0",                           // 필수: 버전
  "author":       "개발자명",                          // 선택
  "author_url":   "https://mysite.com",              // 선택
  "homepage_url": "https://mysite.com/plugin",       // 선택
  "download_url": "https://mysite.com/plugin.zip",  // 필수: ZIP 직접 URL
  "preview_url":  "https://mysite.com/preview.png", // 권장: 스크린샷
  "category":     "utility",                         // 선택: 카테고리
  "tags":         "알림,슬랙,게시판",                   // 선택: 쉼표 구분
  "is_paid":      0,                                 // 0=무료, 1=유료
  "price":        0,                                 // 유료 시 가격
  "price_unit":   "KRW",                             // KRW|USD
  "purchase_url": "",                                // 유료 시 구매 URL
  "description":  "플러그인 설명",                      // 권장
  "cms_min_ver":  "8.0.0",                           // 선택: 최소 DXCMS 버전
  "php_min_ver":  "5.6",                             // 선택: 최소 PHP 버전
  "changelog":    "초기 릴리즈"                         // 선택: 변경 내용
}


6.2 설치 검증 로직 (item_type=plugin)

검증 단계 내용
앵커 파일 감지 ZIP 내에서 plugin.php 파일 위치로 압축 prefix 자동 감지
설치 경로 plugins/{folder_name}/ 에 압축 해제 (themes/ 아님)
필수 파일 검증 plugins/{folder_name}/plugin.php + manifest.php 존재 확인. 둘 중 하나라도 없으면 폴더 삭제 후 false 반환
ZipArchive 우선 php_zip 확장 있으면 ZipArchive 사용. 없으면 순수 PHP 파서로 폴백
SHA-256 해시 검증 file_hash와 실제 다운로드 파일 해시 비교. 불일치 시 설치 거부


7장. 버전 업데이트 등록


7.1 업데이트가 필요한 경우

  1. 플러그인 파일 수정 — plugin.php, manifest.php, assets 등 내용 변경
  2. 새 기능 추가 — 새 훅 등록, 관리자 설정 필드 추가
  3. 버그•보안 수정 — 오류 또는 보안 취약점 수정
  4. PHP 버전 호환성 — 더 넓은 범위의 PHP 버전 지원


7.2 업데이트 등록 절차

  1. 플러그인 파일 수정 후 manifest.php의 version 값 올림 (예: 1.0.0 → 1.1.0)
  2. 새 ZIP 파일로 다시 패키징
  3. 개발자 서버의 ZIP 파일 교체 (URL이 같아도 내용 변경 시 새 해시 생성)
  4. 관리자 → DX마켓 → 개발자 탭으로 이동
  5. 동일한 folder_name + 올린 version + (필요 시 새 download_url) 입력
  6. changelog 필드에 변경 내용 입력
  7. "마켓에 등록 / 업데이트" 버튼 클릭
  8. "버전 업데이트 완료" 또는 "마켓 등록 완료" 메시지 확인

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


7.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. 기존 설치자 주의


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


8.1 삭제 절차

  1. 관리자 → DX마켓 → 개발자 탭 클릭
  2. "마켓에서 내리기" 섹션에서 unique_id 입력
  3. "삭제 요청" 버튼 클릭
  4. DxMarket::deleteItem($devKey, $uniqueId) 호출
  5. 중앙서버 /market_delete.php 에 POST
  6. 중앙서버가 dev_key와 unique_id 소유 관계 검증
  7. 마켓 목록에서 비활성화
  8. "마켓에서 내려졌습니다." 메시지 확인

💡 삭제 후 영향
삭제 후에는 새 사용자가 검색•설치할 수 없습니다.
기존에 이미 설치한 사용자의 플러그인에는 영향이 없습니다.
재등록 시 동일 folder_name으로 다시 등록하면 새 unique_id가 발급됩니다.


9장. 사용자의 플러그인 설치 흐름


9.1 마켓 탐색 화면

사용자는 관리자 → DX마켓 → 탐색 탭에서 플러그인을 검색하고 설치합니다.
 
UI 요소 기능
종류 필터 "플러그인" 선택 시 item_type=plugin 항목만 표시
카테고리 필터 board·shop·blog·social·utility·seo·security·etc 필터
검색창 플러그인 이름, 태그, 작성자로 검색
플러그인 카드 미리보기 이미지, 이름, 버전, 제작자, 설명, 다운로드 수 표시
설치 버튼 무료: 즉시 설치. 유료: 구매 페이지 이동. 설치됨: "✓ 설치됨" 표시
홈페이지 버튼 homepage_url이 있을 때 표시


9.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=plugin 이므로 plugins/{folder_name}/ 에 압축 해제
  9. 필수 파일 검증: plugin.php + manifest.php 존재 확인
  10. 검증 실패 시 plugins/{folder_name}/ 폴더 자동 삭제 (롤백)
  11. 임시 ZIP 파일 삭제
  12. "folder_name v1.0.0 설치 완료." 메시지 표시


9.3 설치 후 활성화

  1. 관리자 → 플러그인 클릭
  2. 새로 설치된 플러그인 카드 확인 (manifest.php에서 이름•설명 자동 로드)
  3. 에디터•결제•캡챠 등 타입 플러그인: "모듈 설정" 탭에서 드롭다운 선택
  4. 유틸리티 플러그인: plugin.php가 자동 로드되어 훅이 즉시 동작


9.4 설치 실패 대응

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


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


10.1 경로 ① (플러그인 관리 공유 버튼) 체크리스트

  • [ ] plugins/ 폴더에 플러그인 폴더 존재 확인
  • [ ] manifest.php의 name, version, description 작성 완료
  • [ ] plugin.php 파일 존재 확인
  • [ ] 관리자 → 플러그인 → 해당 카드에서 "🌐 공유" 버튼 클릭
  • [ ] 공개용 설명 입력 (핵심 기능 한 줄)
  • [ ] 태그 키워드 입력 (쉼표 구분)
  • [ ] "마켓 공유 시작하기" 클릭 후 "공유가 활성화되었습니다." 확인


10.2 경로 ② (중앙서버 공개 마켓) 체크리스트


등록 전 준비

  • [ ] designonex.com 회원가입 및 개발자 키(dxd_...) 발급 완료
  • [ ] DXCMS 관리자 → DX마켓 → 개발자 키 저장 완료
  • [ ] manifest.php name, version, description 작성 완료
  • [ ] plugin.php 파일 존재 확인
  • [ ] ZIP 패키징 완료 (plugin.php + manifest.php 포함 검증)
  • [ ] ZIP 파일 공개 URL로 호스팅 완료
  • [ ] download_url 브라우저에서 직접 접속하여 ZIP 다운로드 확인
  • [ ] 미리보기 이미지(preview_url) 준비 (권장)


등록 폼 입력

  • [ ] 종류: plugin 선택
  • [ ] 폴더명: 영문•숫자•하이픈만, 고유한 이름
  • [ ] 버전: manifest.php version과 일치
  • [ ] 이름: 사용자가 이해하기 쉬운 명칭
  • [ ] 다운로드 URL: https://... 로 시작하는 ZIP 직접 URL
  • [ ] 카테고리: 플러그인 성격에 맞는 카테고리 선택
  • [ ] 태그: 검색 키워드 3개 이상 (쉼표 구분)
  • [ ] 설명: 주요 기능 3~5가지 포함

등록 후 확인

  • [ ] "마켓 등록 완료 — unique_id: ..." 성공 메시지 확인
  • [ ] unique_id 별도 기록 (업데이트•삭제 시 필요)
  • [ ] 마켓 탐색 탭에서 "플러그인" 필터로 내 플러그인 검색 확인
  • [ ] 플러그인 카드에 미리보기 이미지 표시 확인
  • [ ] 테스트 DXCMS에서 설치 버튼 클릭 → 정상 설치 확인
  • [ ] 설치 후 plugins/{폴더명}/ 폴더 생성 확인
  • [ ] 플러그인 동작 최종 확인


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

Q1. 경로 ①과 경로 ② 중 어떤 것을 써야 하나요?

전체 공개 배포가 목적이라면 경로 ② (DX마켓 개발자 탭)를 사용하세요. 팀 내부 배포, 개인 프로젝트, 테스트 목적이라면 경로 ① (플러그인 관리 공유 버튼)이 더 간편합니다. 경로 ①은 개발자 키가 없어도 됩니다.


Q2. 경로 ①로 공유한 플러그인을 다른 사람이 설치하려면?

경로 ①은 DXCMS 자체 공유 시스템으로, share_key를 기반으로 동작합니다. 현재 구현에서는 share_key를 아는 사용자가 해당 플러그인에 접근할 수 있습니다. 전체 공개 마켓에 노출하려면 경로 ②를 사용해야 합니다.


Q3. plugin.php가 변경됐는데 버전을 안 올려도 되나요?

안 됩니다. 파일이 변경되면 SHA-256 해시가 달라지므로 반드시 버전을 올리고 마켓에 업데이트 등록을 해야 새 해시가 저장됩니다. 버전을 올리지 않으면 중앙서버가 업데이트를 거부하거나, 기존 해시와 파일이 불일치하여 사용자 설치 시 "파일 무결성 검증 실패" 오류가 발생합니다.


Q4. 플러그인을 설치했는데 활성화가 안 되는 경우는?

plugin.php는 자동으로 로드되지만, editor•payment•captcha 등 타입 플러그인은 관리자 → 플러그인 → 모듈 설정 탭에서 해당 타입의 드롭다운에서 직접 선택해야 활성화됩니다. utility 타입 플러그인은 선택 없이 자동으로 동작합니다.


Q5. 유료 플러그인으로 등록하면 DXCMS가 결제를 처리해 주나요?

아닙니다. DXCMS는 purchase_url로 이동시켜주는 역할만 합니다. 실제 결제 처리는 개발자가 별도로 구성한 외부 결제 시스템에서 이루어집니다. 결제 완료 후 구매자에게 ZIP을 제공하거나 라이선스 키 시스템을 별도로 구성해야 합니다.


Q6. 마켓 카드의 미리보기 이미지 권장 규격은?

가로 640px 이상, 세로 400px 내외의 JPG 또는 PNG 이미지를 권장합니다. 마켓 카드에서는 고정 높이로 object-fit:cover 방식으로 표시됩니다. 1MB 이하로 최적화하면 로딩 속도에 유리합니다.


Q7. 등록한 플러그인의 이름•설명을 수정하려면?

관리자 → DX마켓 → 개발자 탭에서 동일한 folder_name으로 수정된 정보를 다시 등록하면 중앙서버가 UPDATE로 처리합니다. 이 경우 download_url은 변경하지 않아도 되지만 버전은 올려야 합니다.


Q8. ZipArchive가 없는 저가형 호스팅에서도 설치가 가능한가요?

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

댓글0

로그인 후 댓글을 작성할 수 있습니다.
3.2 폴더 구조 assets/ — 정적 자원 2026.04.21 3.2 폴더 구조 plugins/ — 플러그인 시스템 2026.04.21 3.2 폴더 구조 themes/ — 테마 시스템 2026.04.21 3.2 폴더 구조 boards/ — 게시판 시스템 2026.04.21 3.2 폴더 구조 admin/ — 관리자 패널 2026.04.21 3.2 폴더 구조 core/ — CMS 엔진 2026.04.21 3.1 엔진 개요 실행 구조 개요 2026.04.21 3.1 엔진 개요 DX 엔진 구조 설명 2026.04.21 2. 시작 가이드 설치 시 보안 경로 구조 2026.04.20 2. 시작 가이드 서버별 설정 파일 상세 2026.04.20 2. 시작 가이드 기본 폴더 구조 설명 2026.04.20 2. 시작 가이드 설치 절차 2026.04.20 2. 시작 가이드 설치 환경 (PHP 버전, 서버 환경) 2026.04.20 비전 DXCMS 비전 2026.04.20 라이선스 DXCMS 오픈소스 및 제3자 소프트웨어 저작권 공지 2026.04.20 라이선스 DXCMS 라이선스 (LGPL 3.0) 2026.04.20 1. DX 철학 / 개념 생태계 확장 전략 2026.04.20 1. DX 철학 / 개념 DXCMS가 지향하는 방향 (플랫폼 vs 단순 CMS) 2026.04.20 1. DX 철학 / 개념 프레임워크 + CMS 통합 구조의 의미 2026.04.20 1. DX 철학 / 개념 기존 CMS와의 구조적 한계 2026.04.20
31
전체 회원
503
전체 게시글
775
전체 댓글
442
오늘 방문
33,174
전체 방문
3
현재 접속
인기글 7일 이내
최신글
최신댓글
목록