DXCMS v10.1.0 패치 노트
릴리즈 버전: v10.1.0
기준 버전: v10.0.9
작성일: 2026-09-28
1. 버전 단일 관리 (version.php)
대상 파일
version.php← 신규index.phpdx_load.phpinstall/index.phpinstall/migrate.php
변경 내용
- 루트
version.php(return '10.1.0';) 한 곳에서 버전 관리 — 버전 변경 시 이 파일 한 줄만 수정 index.php·dx_load.php·install/index.php·install/migrate.php모두 이 파일을 읽어DX_VERSION상수 정의 (파일 없으면0.0.0)- 기존
DX_VERSION사용처(캐시 버스팅?v=, DX MarketX-Cms-Version, 관리자 버전 표시)는 수정 없이 그대로 동작 migrate.php맨 끝에 현재 버전 동기화 블록 추가 —cms_version = DX_VERSION기록. 앞으로는 버전을 올려도 migrate.php를 고칠 필요 없음 (DB 구조 변경 시에만 버전별 블록 추가)migrate.php화면 제목·배지·완료 문구가DX_VERSION을 자동 표시
2. 설치 마법사 전면 개편 (install v2.0.0)
대상 파일
install/index.phpinstall/css/install.cssinstall/js/install.js← 신규
변경 내용
- 4단계 구성: 라이선스 동의 → 환경 점검 → 설치 정보 → 완료
- 라이선스 동의 단계 신설 (GNU LGPL v3.0)
- 허용 / 의무 / 금지 사항 요약 +
LICENSE.ko.md전문 표시 + 보증 부인 고지 + 온라인 안내 링크 - 동의 여부를 매 단계 서버에서 재확인 — URL(
?step=3) 직접 입력으로 건너뛸 수 없음 - 설치 시
dx_settings에license_type(LGPL-3.0),license_agreed_at,license_agreed_version기록
- 허용 / 의무 / 금지 사항 요약 +
- 신규 설치 시
cms_version기록 (기존에는 migrate.php에서만 기록되어 신규 설치 사이트는 값이 비어 있었음) - 설치 실행부(스키마 실행, 보안 경로 생성,
config.php작성)는 기존 로직 그대로 유지 - 관리자 비밀번호 확인 입력 추가 (서버·브라우저 양쪽 검증)
- 오류 시 입력값 유지 (비밀번호 제외)
- 설치 버튼 중복 제출 방지·진행 표시
- 환경 점검:
mbstring을 권장 → 필수로 변경 (코어가mb_*함수를 46곳에서 폴백 없이 사용 — 없으면 사이트 500 오류), 설치 스키마 파일 확인 추가 - 버그 수정: 설치 완료 후
config.php가 생기면서 완료 화면 대신 "이미 설치되어 있습니다"가 표시되던 문제 → 1회용 토큰(data/.install_complete)으로 방금 설치한 브라우저에만 완료 화면 표시 - 디자인: 좌측 단계 레일(진행선) + 우측 작업 영역, 모바일은 상단 단계 표시, 외부 CDN·폰트 의존 없음 (오프라인 NAS·사내망 대응)
- 검증: MariaDB 실제 설치로 전 과정 확인 (동의 우회 차단, DB 오류 처리, 완료 화면, 토큰 재사용 차단, 설정값 기록, migrate 버전 동기화)
배포 참고
- 기존 사용자: 파일 덮어쓰기 →
install/migrate.php실행 (cms_version10.1.0 자동 기록) → Ctrl+F5 - 신규 설치자: 설치 마법사에서 라이선스 동의 후 설치 (
schema.sql변경 없음) - 이후 버전 업:
version.php한 줄만 변경 → migrate.php 실행
변경 파일 전체 목록 (v10.1.0)
| 파일 | 패치 |
|---|---|
version.php |
신규 · 버전 단일 관리 |
index.php |
version.php 로드 |
dx_load.php |
version.php 로드 |
install/index.php |
설치 마법사 v2.0.0 (라이선스 동의 · 버전/동의 기록 · 완료 화면 수정) |
install/css/install.css |
디자인 전면 개편 |
install/js/install.js |
신규 · 제출 잠금 · 비밀번호 확인 |
install/migrate.php |
version.php 로드 · 버전 동기화 블록 · 화면 버전 자동 표시 |
DXCMS v10.0.9 패치 노트
릴리즈 버전: v10.0.9
기준 버전: v10.0.2 (v9.0.0 기반 패치본)
작성일: 2026-09-28
1. 게시판 설문 첨부 버그 수정 (survey_fix)
대상 파일
assets/js/dx-board-write.jsthemes/default/board/basic/write.phpboards/skins/gallery/write.php
변경 내용
- 버그: JS 분리(v10.0.0) 과정에서
dxSurveyToggle()이 본문(#dx-survey-body) 대신 외곽 박스(#dx-survey-wrap)를 토글 → 신규 글쓰기에서 설문 첨부 체크 시 펼쳐지지 않음 (수정 화면은 PHP가 펼친 상태로 출력해 정상처럼 보였음) dxAddSq()가 존재하지 않는#dx-sq-list를 참조하고 필드명(sq_question[],single/multi)이 handler(sq_text[],radio/checkbox)와 달라 문항 추가 불가 → 수정dxSurveyToggle,dxSqTypeChange,dxRemoveSq,dxAddSq4개 함수를 v9.0.0 원본 로직으로 복원- 신규 글쓰기에서 설문 영역 기본 펼침 (
$_surveyOn = ($_esSurvey !== null) || empty($_isEd)) — 빈 문항은dx_board_save_survey()에서 걸러져 빈 설문 미생성 - 설문 첨부 전체를
<div id="dx-survey-group">으로 감쌈 — 플러그인 개발용 훅 (basic·gallery 공통,use_survey게시판에서만 출력)
2. 갤러리 글쓰기 JS 분리 누락분 적용 (gallery_write_patch)
대상 파일
boards/skins/gallery/write.php
변경 내용
- v10.0.0 JS 분리에서 누락된 gallery
write.php인라인 스크립트 4블록(링크·파일첨부·설문·검증) 제거 →assets/js/dx-board-write.js공통 사용 (basic과 v9 기준 코드 동일 확인) - basic에만 반영돼 있던 v10 패치 2건 동기화
- 스타일 경로 하드코딩
dx_base_url('themes/default/board/basic/style.css')→dx_theme_url('board/basic/style.css') - 비회원 글 수정용
guest_tokenhidden 필드 누락 추가
- 스타일 경로 하드코딩
- 49KB → 33KB
3. 인라인 CSS 전면 분리 (css_split)
변경 내용
- PHP 내
<style>블록 27개 중 25개를 외부 CSS 파일로 분리, 원래 위치에<link>로 교체 (캐스케이드 순서 동일,?v=DX_VERSION) core/·extend/는 웹 접근 차단(403)이므로 core 계열 CSS는assets/css/하위에 배치- PHP 동적 값 처리
_social_notice.php—$notice_type색상 분기 →<body class="is-error">클래스 방식- 캡차 —
#동적ID::placeholder→.dx-cap-input클래스 - 최신글 갤러리 grid/slide —
#동적ID선택자 →.dx-latest-gallery-grid/.dx-latest-gallery-slide _head.php— 테마 변수는theme-vars.css로, 관리자 설정 색상--p한 줄만 인라인 유지
- 인라인 유지:
layout/_head.php의--p,core/DxCss.phpSSR(페이지별 동적 생성) - 검증: 분리 CSS 전체를 원본 블록과 글자 단위 자동 대조(일치),
php -l통과, CRLF/LF 보존
4. 인라인 JS 전면 분리 (js_split 1~5차)
공통 원칙
- 로직은 원문 그대로 이동 — 변경 줄은 PHP 값 참조부만 (원본 대비 줄 단위 diff 확인)
- PHP 값은 원본 리터럴(따옴표·
addslashes·htmlspecialchars·json_encode포함)을 그대로 인라인 설정 객체로 이동 → 인코딩 결과 동일 - PHP 조건문(
<?php if … ?>)은 설정값null/true/false분기로 변환 (관리자 전용 함수 등 기존 조건 유지) <script src>를 원래 블록 위치에 배치해 실행 순서·DOM 타이밍 유지, 즉시 실행 블록은 JS 파서 분석 후 위치별 개별 파일로 분리- 검증: 전 파일
node --check/php -l, 설정 블록은 실제 PHP 실행으로 값 확인, 주요 흐름은 헤드리스 크롬으로 원본 대비 동작 비교
1차 — 게시판 스킨 (basic · gallery list/view)
- view 블록 5개(basic=gallery 원문 동일) →
dx-board-view.js로 통합 (YouTube embed, CSRF, 새 글·수정 브로드캐스트, 이동/복사, 비회원 비밀번호 확인) - list — 정렬 토글은
dx-board-list.js, 모바일 카테고리 바는dx-board-list-cat.js(신규), 실시간·일괄처리는 스킨별list-live.js, CSRF 갱신·전체공지는list-tail.js - gallery 전용 기능(갤러리 카드 실시간 삽입, 전체공지 실시간)은 gallery 파일에만 두어 basic 동작 불변
- gallery list 1145→843줄, view 1175→1031줄 / basic list 589→413줄, view 1180→1036줄
2차 — themes
_list_rows.php전체공지 실시간 핸들러 →_list_rows.js(페이지당 1회 출력 가드 유지, 주석 깨진 문자 정리)auth/mypage/profile.php탈퇴 모달 자동 표시 →profile-withdraw.js($withdrawMsg있을 때만 로드)layout/_head.phpGoogle Analytics 초기화 →assets/js/dx-gtag.js(측정 ID는data-ga-id, 원본과 같은 실행 순서를 위해 async gtag.js 앞에서 로드)
3차 — core (auth 포함)
_social_notice.php소셜 가입 인증코드 제출 →assets/js/auth/social-verify.js(원본/분리본 실제 제출 폼 값 동일 확인)email-verify.php→assets/js/auth/email-verify.js,register.php(2블록) →assets/js/auth/register.js,profile.php→assets/js/auth/profile.jscore/auth/mypage/_foot·memo·profile.php— theme 분리본과 동일 구조로 정렬,dx-mypage.js·dx-mypage-memo.js재사용DxPopup→assets/js/core/dx-popup.js(DX_POPUP_DATA)- 캡차: 내장 →
captcha.js, reCAPTCHA v3 →recaptcha-v3.js(폼별 인스턴스 값은data-sk/data-ctx), Turnstile →turnstile.js
4차 — admin
- 관리자 인라인 스크립트 23블록 분리, 각 페이지 옆에 배치 (예:
admin/boards/list.js,admin/market/script.js) - PHP 값은
DX_ADM_*설정으로 이동 (레벨·메뉴·메일·인기글 차트·전체공지·게시판 삭제 토큰맵·추가필드·소켓·페이지 관리·플러그인·마켓) - admin 내 로직 포함 인라인 스크립트 0개 (소켓·세션가드 설정만 유지)
5차 — plugins · pages
- 결제 플러그인 8종(PayPal, NICEPAY, 네이버페이, Stripe, 토스페이, KCP, KG이니시스, 템플릿) → 각 플러그인
payment.js(DX_PAY_*) - 토스페이: PHP 문자열 출력 스크립트의 이스케이프 해제 후 실행 코드 그대로 분리
dx-socket/admin/settings.php·widget.php→settings.js·widget.js,pages/shop.php→assets/js/pages/shop.js
의도적 인라인 유지
- PHP → JS 설정값 블록 (
DX_BASE,DX_SOCKET,DX_*_CFG등) - 다크모드 FOUC 방지 스크립트 (
extend/top/01_darkmode_early.php) — 외부화 시 로드 실패하면 화면이 숨김 상태로 남을 위험 - 결제·로그인·로그아웃 리다이렉트 한 줄(
location.href/location.replace) — 토큰·결제 URL 포함 단일 응답 dxb-css로더·rescan,DxSeoJSON-LD(데이터)
5. 마이페이지 쪽지 CSRF 누락 버그 수정 (memo_csrf_fix)
대상 파일
assets/js/dx-mypage-memo.js
변경 내용
- 버그: v10.0.0 마이페이지 JS 분리 시
var MX_CSRF선언이 인라인에서 삭제되고 JS 파일에도 없음 → 쪽지 읽음·삭제·보내기 요청 시ReferenceError - 원본 선언 줄을
dx-mypage-memo.js상단에 그대로 복원
6. DB 마이그레이션 v10.0.9 블록 추가 (migrate)
대상 파일
install/migrate.php
변경 내용
- v10.0.9 블록 추가 —
dx_settings.cms_version=10.0.9기록 (ON DUPLICATE KEY UPDATE, 중복 실행 안전) - DB 구조(테이블·컬럼) 변경 없음
- 마이그레이션 화면 표시 버전 v8.8.3 → v10.0.9, 완료 안내에 캐시 새로고침(Ctrl+F5) 안내 추가, 주요 변경 사항에 v10.0.9 항목 추가 (v8.8.3 내역은 하단 유지)
- 기존 사용자는 파일 덮어쓰기 후 반드시
https://도메인/install/migrate.php실행
배포 참고
- 기존 사용자: 패치 파일 덮어쓰기 →
install/migrate.php브라우저 실행 (cms_version 10.0.9 기록) → Ctrl+F5 - 신규 설치자: 전체 소스로 설치 (
install/schema.sql변경 없음) - 캐시: JS/CSS 캐시 버스팅이
?v=DX_VERSION이므로 배포 시DX_VERSION을10.0.9로 올려야 방문자 브라우저가 새 파일을 받음 (미변경 시 구 JS + 신 PHP 조합으로DX_CSRF is not defined등 오류) - 적용 순서: CSS 분리 → JS 분리 1~5차 (일부 PHP 파일에 CSS·JS 변경이 함께 포함)
- 서버 charset: 분리된
.js/.css가 UTF-8로 전송되어야 함 (카페24 등 기본 EUC-KR 호스팅은AddCharset UTF-8 .js .css필요) boards/skins/product/는 운영 서버에 없어 패치 대상에서 제외
변경 파일 전체 목록 (v10.0.9)
| 파일 | 패치 |
|---|---|
admin/boards/fields.js |
신규 · JS 분리 4차 |
admin/boards/index.php |
CSS 분리 + JS 분리 4차 |
admin/boards/list-2.js |
신규 · JS 분리 4차 |
admin/boards/list.js |
신규 · JS 분리 4차 |
admin/boards/style.css |
신규 · CSS 분리 |
admin/boards/type.js |
신규 · JS 분리 4차 |
admin/global_notices/form.js |
신규 · JS 분리 4차 |
admin/global_notices/index.php |
JS 분리 4차 |
admin/global_notices/list.js |
신규 · JS 분리 4차 |
admin/index.php |
JS 분리 4차 |
admin/layout.js |
신규 · JS 분리 4차 |
admin/levels/index.php |
JS 분리 4차 |
admin/levels/script.js |
신규 · JS 분리 4차 |
admin/market/index.php |
JS 분리 4차 |
admin/market/script.js |
신규 · JS 분리 4차 |
admin/menus/index.php |
JS 분리 4차 |
admin/menus/script.js |
신규 · JS 분리 4차 |
admin/pages/index.php |
JS 분리 4차 |
admin/pages/script.js |
신규 · JS 분리 4차 |
admin/plugins/delete.js |
신규 · JS 분리 4차 |
admin/plugins/index.php |
JS 분리 4차 |
admin/plugins/script.js |
신규 · JS 분리 4차 |
admin/popular/chart.js |
신규 · JS 분리 4차 |
admin/popular/index.php |
JS 분리 4차 |
admin/popup/index.php |
CSS 분리 + JS 분리 4차 |
admin/popup/script.js |
신규 · JS 분리 4차 |
admin/popup/style.css |
신규 · CSS 분리 |
admin/sendmail/compose.js |
신규 · JS 분리 4차 |
admin/sendmail/index.php |
CSS 분리 + JS 분리 4차 |
admin/sendmail/smtp.js |
신규 · JS 분리 4차 |
admin/sendmail/style.css |
신규 · CSS 분리 |
admin/sendsms/index.php |
JS 분리 4차 |
admin/sendsms/script.js |
신규 · JS 분리 4차 |
admin/settings/index.php |
JS 분리 4차 |
admin/settings/script.js |
신규 · JS 분리 4차 |
admin/shop/index.php |
JS 분리 4차 |
admin/shop/script.js |
신규 · JS 분리 4차 |
admin/sites/index.php |
JS 분리 4차 |
admin/sites/script.js |
신규 · JS 분리 4차 |
admin/socket/index.php |
JS 분리 4차 |
admin/socket/script.js |
신규 · JS 분리 4차 |
admin/theme/index.php |
JS 분리 4차 |
admin/theme/script.js |
신규 · JS 분리 4차 |
assets/css/auth/email-verify.css |
신규 · CSS 분리 |
assets/css/auth/login.css |
신규 · CSS 분리 |
assets/css/auth/register.css |
신규 · CSS 분리 |
assets/css/auth/social-error.css |
신규 · CSS 분리 |
assets/css/auth/social-notice.css |
신규 · CSS 분리 |
assets/css/core/captcha.css |
신규 · CSS 분리 |
assets/css/core/dx-debugbar.css |
신규 · CSS 분리 |
assets/css/core/dx-popup.css |
신규 · CSS 분리 |
assets/css/core/session-expired.css |
신규 · CSS 분리 |
assets/css/dx-font.css |
신규 · CSS 분리 |
assets/css/pages/home.css |
신규 · CSS 분리 |
assets/css/pages/shop.css |
신규 · CSS 분리 |
assets/js/auth/email-verify.js |
신규 · JS 분리 3차 |
assets/js/auth/profile.js |
신규 · JS 분리 3차 |
assets/js/auth/register.js |
신규 · JS 분리 3차 |
assets/js/auth/social-verify.js |
신규 · JS 분리 3차 |
assets/js/core/captcha.js |
신규 · JS 분리 3차 |
assets/js/core/dx-popup.js |
신규 · JS 분리 3차 |
assets/js/core/recaptcha-v3.js |
신규 · JS 분리 3차 |
assets/js/core/turnstile.js |
신규 · JS 분리 3차 |
assets/js/dx-board-list-cat.js |
신규 · JS 분리 1차 |
assets/js/dx-board-list.js |
JS 분리 1차 |
assets/js/dx-board-view.js |
JS 분리 1차 |
assets/js/dx-board-write.js |
설문 첨부 수정 |
assets/js/dx-gtag.js |
신규 · JS 분리 2차 |
assets/js/dx-mypage-memo.js |
JS 분리 3차 + MX_CSRF 복원 |
assets/js/pages/shop.js |
신규 · JS 분리 5차 |
boards/skins/gallery/list-live.js |
신규 · JS 분리 1차 |
boards/skins/gallery/list-tail.js |
신규 · JS 분리 1차 |
boards/skins/gallery/list.php |
JS 분리 1차 |
boards/skins/gallery/view.php |
JS 분리 1차 |
boards/skins/gallery/write.php |
설문 첨부 수정 + 갤러리 글쓰기 JS 분리 |
core/DxDebugBar.php |
CSS 분리 |
core/DxPopup.php |
CSS 분리 + JS 분리 3차 |
core/DxSocialAuth.php |
CSS 분리 |
core/Secure.php |
CSS 분리 |
core/auth/_social_notice.php |
CSS 분리 + JS 분리 3차 |
core/auth/email-verify.php |
CSS 분리 + JS 분리 3차 |
core/auth/login.php |
CSS 분리 |
core/auth/mypage/_foot.php |
JS 분리 3차 |
core/auth/mypage/memo.php |
JS 분리 3차 |
core/auth/mypage/profile.php |
JS 분리 3차 |
core/auth/profile.php |
JS 분리 3차 |
core/auth/register.php |
CSS 분리 + JS 분리 3차 |
core/captcha/DxBuiltinDriver.php |
CSS 분리 + JS 분리 3차 |
core/captcha/DxRecaptchaV3Driver.php |
JS 분리 3차 |
core/captcha/DxTurnstileDriver.php |
JS 분리 3차 |
core/functions.php |
CSS 분리 |
install/css/install.css |
신규 · CSS 분리 |
install/css/migrate-required.css |
신규 · CSS 분리 |
install/css/migrate.css |
신규 · CSS 분리 |
install/index.php |
CSS 분리 |
install/migrate.php |
CSS 분리 + v10.0.9 마이그레이션 블록 |
pages/home.php |
CSS 분리 |
pages/shop.php |
CSS 분리 + JS 분리 5차 |
plugins/custom-payment-template/payment.js |
신규 · JS 분리 5차 |
plugins/custom-payment-template/plugin.php |
JS 분리 5차 |
plugins/dx-socket/admin/settings.js |
신규 · JS 분리 5차 |
plugins/dx-socket/admin/settings.php |
JS 분리 5차 |
plugins/dx-socket/admin/widget.css |
신규 · CSS 분리 |
plugins/dx-socket/admin/widget.js |
신규 · JS 분리 5차 |
plugins/dx-socket/admin/widget.php |
CSS 분리 + JS 분리 5차 |
plugins/dx-socket/plugin.php |
CSS 분리 |
plugins/dx-socket/style.css |
신규 · CSS 분리 |
plugins/kcp-payment/payment.js |
신규 · JS 분리 5차 |
plugins/kcp-payment/plugin.php |
JS 분리 5차 |
plugins/kg-inicis-payment/payment.js |
신규 · JS 분리 5차 |
plugins/kg-inicis-payment/plugin.php |
JS 분리 5차 |
plugins/naverpay-payment/payment.js |
신규 · JS 분리 5차 |
plugins/naverpay-payment/plugin.php |
JS 분리 5차 |
plugins/nicepay-payment/payment.js |
신규 · JS 분리 5차 |
plugins/nicepay-payment/plugin.php |
JS 분리 5차 |
plugins/paypal-payment/payment.js |
신규 · JS 분리 5차 |
plugins/paypal-payment/plugin.php |
JS 분리 5차 |
plugins/stripe-payment/payment.js |
신규 · JS 분리 5차 |
plugins/stripe-payment/plugin.php |
CSS 분리 + JS 분리 5차 |
plugins/stripe-payment/style.css |
신규 · CSS 분리 |
plugins/tosspay-payment/payment.js |
신규 · JS 분리 5차 |
plugins/tosspay-payment/plugin.php |
JS 분리 5차 |
themes/default/auth/mypage/profile-withdraw.js |
신규 · JS 분리 2차 |
themes/default/auth/mypage/profile.php |
JS 분리 2차 |
themes/default/board/basic/_list_rows.js |
신규 · JS 분리 2차 |
themes/default/board/basic/_list_rows.php |
JS 분리 2차 |
themes/default/board/basic/list-live.js |
신규 · JS 분리 1차 |
themes/default/board/basic/list-tail.js |
신규 · JS 분리 1차 |
themes/default/board/basic/list.php |
JS 분리 1차 |
themes/default/board/basic/view.php |
JS 분리 1차 |
themes/default/board/basic/write.php |
설문 첨부 수정 |
themes/default/board_latest/gallery/grid.css |
신규 · CSS 분리 |
themes/default/board_latest/gallery/grid.php |
CSS 분리 |
themes/default/board_latest/gallery/slide.css |
신규 · CSS 분리 |
themes/default/board_latest/gallery/slide.php |
CSS 분리 |
themes/default/layout/_head.php |
CSS 분리 + JS 분리 2차 |
themes/default/layout/css/theme-vars.css |
신규 · CSS 분리 |
themes/default/parts/pagination.css |
신규 · CSS 분리 |
themes/default/parts/pagination.php |
CSS 분리 |
themes/default/search/list.css |
신규 · CSS 분리 |
themes/default/search/list.php |
CSS 분리 |
DXCMS v10.0.0 패치 노트
릴리즈 버전: v10.0.0
기준 버전: v9.9.0
작성일: 2026-09-21
1. 게시판 JS 분리 (board_js_patch)
대상 파일
assets/js/dx-board-view.jsassets/js/dx-board-list.jsassets/js/dx-board-write.jsthemes/default/board/basic/view.phpthemes/default/board/basic/list.phpthemes/default/board/basic/write.phpboards/skins/gallery/view.phpboards/skins/gallery/list.php
변경 내용
- 각 스킨(view/list/write)에 인라인으로 포함되어 있던 JS를 외부 파일로 분리
dxFetch, LightBox, OG카드, 삭제 모달 등 공통 함수를dx-board-view.js로 통합dxToggleSearch,dxToggleAdmMenu,dxBulkDelete등을dx-board-list.js로 통합dxWriteAlert등을dx-board-write.js로 통합
2. 뷰 페이지 페이지네이션 vp → page 변경 (vp_patch, vp-re-patch)
대상 파일
themes/default/board/basic/view.phpboards/skins/gallery/view.php
변경 내용
- 뷰 페이지 하단 목록 페이지네이션 URL 파라미터
vp=→page=변경 - 하위 호환:
$_GET['vp']폴백 유지 - 페이지네이션 base URL을
view/{id}?→list?로 변경 (목록 페이지 기반) $_ltPaginationParam = 'page'적용
3. 갤러리/베이직 뷰 최종 패치 (view_final_patch)
대상 파일
assets/js/dx-board-view.jsthemes/default/board/basic/view.phpboards/skins/gallery/view.php
변경 내용
- LightBox HTML(
div#dx-lb-ov)을script src앞에 배치 (DOM 존재 보장) dx-cmt-del-modalHTML 추가gallery/style.css추가 로드- JS 분리 + LB HTML 삽입 최종 확정
4. 다크모드 CSS 외부 파일화 (darkmode_patch, darkmode_css_patch)
대상 파일
assets/dx-dark.css← 신규assets/js/dx-darkmode-engine.jsextend/top/01_darkmode_early.phpextend/bottom/02_darkmode_engine.php
변경 내용
injectSiteCss(),injectAdminCss()동적<style>생성 제거- 사이트+관리자 다크모드 CSS를
assets/dx-dark.css정적 파일로 분리 injectDarkLink()추가 — 다크모드 ON/OFF 시<link>태그 추가/제거 방식으로 교체scanAll(),processEl()인라인 style 주입 함수 제거 (693줄 → 119줄)01_darkmode_early.php인라인<style>블록 제거 — 다크모드일 때만<link>동적 삽입themes/default/layout/_head.php에서body.darkCSS 변수 블록 제거 (dx-dark.css로 이동)
5. 소켓 플러그인 CSS/JS 정리 (socket_patch, socket_css_patch, socket_js_patch, reply_fix_patch)
대상 파일
plugins/dx-socket/plugin.phpplugins/dx-socket/chats/default/chat.phpplugins/dx-socket/chats/bubble/chat.phpassets/js/dx-socket-core.js
변경 내용
- 채팅 스킨 CSS를
chat.php직접 출력 →plugin.php의dx_head훅으로 이동 dx-socket-core.js:dxLog,dxLogToServer함수 및 호출 제거 (1150줄 → 1105줄)- 답글 소켓 실시간 반영 버그 수정 (
socket-core.js.php)
6. DxCache 에러 로그 제거 (dxcache_patch)
대상 파일
core/DxCache.php
변경 내용
file_get_contents()전에file_exists()선체크 추가@file_get_contents()적용 — PHP error_log에 캐시 파일 없음 에러 기록 제거
7. N 배지 버그 수정 (badge_fix)
대상 파일
themes/default/layout/_init.phpthemes/default/layout/_main.php
변경 내용
- slug 중복 카테고리(
DX개발이야기,ADAY모두 slug=dx) 오배지 수정 _dxCatNewBadge()— slug 체크 시category이름도 동시 체크board_key단독키 +board_key|category복합키 모두 세팅_main.php— 부모 카테고리 N 배지에서 자식 카테고리($_subs) 체크 제거
8. 검색 기능 개선 (search_fix)
대상 파일
core/search/handler.php
변경 내용
ft_min_word_len(기본값 4) 미만 키워드는 FULLTEXT 대신 LIKE 검색으로 폴백- "흥청" 등 2~3글자 한국어 검색 정상 동작
ft_min_word_len값은 1시간 캐시로 조회 (DB 부하 최소화)- MySQL 5.6 ~ 최신 버전 모두 호환
9. 회원관리 대시보드 + 로그인 로그 (members_patch)
대상 파일
admin/index.phpadmin/members/index.phpcore/auth/Auth.phpinstall/schema.sqlinstall/migrate.php
변경 내용
- 관리자 사이드메뉴
회원 목록→회원 관리로 변경 - 회원관리 서브메뉴 8개 탭 구조 추가
- 회원 현황(대시보드) / 회원 목록 / 가입 관리 / 회원 그룹 / 권한 관리 / 활동 관리 / 제재 관리 / 탈퇴 관리
- 대시보드: 통계 카드 4개 + 최근 7일 가입 추이 바 차트 + 8개 메뉴 카드
- 활동 관리 탭: 로그인/로그아웃/실패 기록 조회 (검색, 필터, 페이지네이션)
dx_login_logs테이블 신설 (신규 설치 schema.sql + 마이그레이션)Auth.php— 로그인 성공/실패/로그아웃 시dx_login_logs자동 기록
10. 소셜 로그인 이메일 인증 연동 (social_email_patch, social_email_fix)
대상 파일
core/DxSocialAuth.phpcore/auth/_social_common.phpcore/auth/_social_notice.phpcore/auth/email-verify.php
변경 내용
- 소셜 로그인으로 신규 가입 시
use_email_verify설정 적용 use_email_verify = OFF→ 기존과 동일 (바로 가입+로그인)use_email_verify = ON→ 소셜 정보를 세션에 임시 저장 + 인증 메일 발송 + 인증 페이지 안내- 기존 회원 소셜 로그인은 인증 없이 바로 로그인
_social_notice.php— 이메일 인증 필요 시 인증 코드 입력 폼 표시 (6자리, Enter 지원)email-verify.php— 인증 완료 후dx_social_pending세션으로 소셜 회원 직접 가입+로그인
11. 홈 CSS 개선 (home_css_patch)
대상 파일
themes/default/page/home.phpthemes/default/layout/css/home.css
변경 내용
- 홈 페이지 CSS 외부 파일 분리
12. 마이페이지 개선 (mypage_patch)
대상 파일
assets/js/dx-mypage.jsassets/js/dx-mypage-memo.jsthemes/default/auth/mypage/profile.phpthemes/default/auth/mypage/memo.phpthemes/default/auth/mypage/_foot.php
변경 내용
- 마이페이지 JS 외부 파일 분리
- 쪽지 JS 외부 파일 분리
13. 게시판 고정글 관리자 기능 (boards_sticky_patch)
대상 파일
admin/boards/index.php
변경 내용
- 게시판 관리자에서 고정글(sticky) 설정 기능 추가
14. 다운로드 버그 수정 (dx-download-patch)
대상 파일
core/api/download.php
변경 내용
- 파일 다운로드 처리 버그 수정
변경 파일 전체 목록
| 파일 | 패치 |
|---|---|
assets/dx-dark.css |
신규 |
assets/js/dx-board-view.js |
JS 분리 |
assets/js/dx-board-list.js |
JS 분리 |
assets/js/dx-board-write.js |
JS 분리 |
assets/js/dx-darkmode-engine.js |
693줄→119줄 |
assets/js/dx-socket-core.js |
1150줄→1105줄 |
assets/js/dx-mypage.js |
JS 분리 |
assets/js/dx-mypage-memo.js |
JS 분리 |
themes/default/board/basic/view.php |
JS분리+vp→page |
themes/default/board/basic/list.php |
JS 분리 |
themes/default/board/basic/write.php |
JS 분리 |
themes/default/layout/_head.php |
body.dark 제거 |
themes/default/layout/_init.php |
N배지 버그 수정 |
themes/default/layout/_main.php |
N배지 버그 수정 |
themes/default/page/home.php |
CSS 분리 |
themes/default/layout/css/home.css |
신규 |
themes/default/auth/mypage/profile.php |
JS 분리 |
themes/default/auth/mypage/memo.php |
JS 분리 |
themes/default/auth/mypage/_foot.php |
JS 분리 |
boards/skins/gallery/view.php |
JS분리+vp→page |
boards/skins/gallery/list.php |
JS 분리 |
plugins/dx-socket/plugin.php |
CSS head로 이동 |
plugins/dx-socket/chats/default/chat.php |
CSS link 제거 |
plugins/dx-socket/chats/bubble/chat.php |
CSS link 제거 |
extend/top/01_darkmode_early.php |
인라인CSS 제거 |
extend/bottom/02_darkmode_engine.php |
CSS link 로드 |
core/DxCache.php |
에러로그 제거 |
core/DxSocialAuth.php |
이메일인증 연동 |
core/auth/Auth.php |
로그인 로그 기록 |
core/auth/_social_common.php |
need_verify 처리 |
core/auth/_social_notice.php |
인증 코드 입력폼 |
core/auth/email-verify.php |
소셜 가입 완료 |
core/api/download.php |
버그 수정 |
core/search/handler.php |
LIKE 폴백 추가 |
admin/index.php |
회원관리 메뉴명 |
admin/members/index.php |
대시보드+서브메뉴 |
admin/boards/index.php |
고정글 기능 |
install/schema.sql |
login_logs 추가 |
install/migrate.php |
v9.0.0 블록 추가 |
DXCMS — Copyright (C) 2026 designonex [디자인원엑스]
License: GNU Lesser General Public License v3.0 (LGPL-3.0)


