11. 확장 포인트
11.1 훅 (dx_add_hook($name, $callable, $priority=10), 낮을수록 먼저)
dx_head, dx_body_bottom, dx_board_list_context, dx_board_view_context, dx_board_after_save, dx_admin_top, dx_editor_render, dx_after_login, dx_after_logout.
11.2 extend/ 자동 실행 (파일명 오름차순, 한 파일 오류가 다른 파일에 영향 없음)
| 단계 | 시점 | 파일 |
|---|---|---|
top/ |
초기화 완료 직후 | 01_darkmode_early, 02_modal_core, 03_webp_upload, 05_activity_monitor, 50_board_fields, 90_market_guard, 99_ppurio_sms |
middle/ |
라우팅 단계 | 01_visit_tracker, 10_email_verify_gate |
bottom/ |
렌더링 완료 후 | 01_session_rescue_gc(2% 확률 GC), 02_darkmode_engine |
*.php.disabled 3개(99_example_*)는 비활성 예제다. 이름 끝의 .disabled를 지워야 동작한다.
11.3 플러그인
- 구조:
plugins/{id}/plugin.php(dx_register_plugin([...])호출),manifest.php(마켓용: name, version, description, author, type, requires, tables). - 번들:
ckeditor4-editor(기본 에디터, 로컬),dx-socket(v3.9.2), 결제 10종(tosspay,kakaopay,naverpay,nicepay,kg-inicis,kcp,danal,payletter,paypal,stripe) +custom-payment-template,example-plugin, 공용dx-payment-helper.php. ckeditor4-editor에는manifest.php가 없다. 다른 플러그인은 모두 있다.- 결제 플러그인은 PG별 테스트/운영 엔드포인트가 코드에 들어 있다 (이니시스
stgstdpay/stdpay, KCPtestpay/pay, 다날testapi/api, 페이레터testpgapi/pgapi등). - 플러그인 활성 상태는 DB
dx_plugins에 저장되고load_plugins()가 부팅 시 로드한다.
11.4 테마·스킨 폴백 체인
- 게시판 스킨:
themes/{테마}/board/{스킨}/→boards/skins/{스킨}/→boards/skins/gallery/ - 카테고리 스킨:
themes/{테마}/category/→boards/category/skins/{스킨}/→…/default/ - 테마 파일이 없으면
themes/default/로 폴백. - 번들 스킨: 테마
default/board/basic, 전역boards/skins/gallery, 카테고리default | pill | tab. 최신글 위젯:basic,card,list,simple,gallery/grid,gallery/slide. - 테마 메타:
theme.json(nameDXCMS BOARD, version1.4.1, supportsboard/page/gallery/qa, 옵션 12개 — primary_color, logo_text, footer_desc, 상호·대표자·사업자번호·통신판매업·에스크로·연락처·SNS·약관 URL 등). - 스킨 개발 규칙은
boards/skins/SKIN_GUIDE.md(스킨명은 영문·숫자·_·-만,skin.json필수,actions/로 커스텀 URL).
11.5 서비스 컨테이너
dx_app()->bind('mailer', function(){...}) / dx_app()->make('mailer'). DxContainer::registerCoreServices()가 부팅 시 코어 서비스를 등록한다.