애드온 시스템

애드온 시스템

애드온 시스템 1.0.1 가이드

애드온 시스템 작동 방식 변경 및 업데이트 안내

1.0.1 변경된 사항

  • 실행 진입점 변경: addon.jsonentry 정의 방식에서 애드온 폴더/addon.extend.php를 자동 로딩하는 방식으로 변경
  • 설정 관리 강화: addon.json에 정의한 addon_setting 항목을 관리자 페이지에서 직접 수정 가능

애드온 시스템이란?

기존 extend 환경에서 실행되는 프로그램(기능) 개발 시 코어 수정을 최소화하기 위해 설계된 모듈형 확장 시스템입니다.

장점

  • 관리 편의성: 관리자 페이지에서 ON/OFF 토글 제공 (라우터 기반)
  • 독립적 관리: 애드온별 전용 폴더로 코드·리소스 분리
  • DB 의존 최소화: 민감정보 제외 설정을 addon.json으로 관리
  • 확장성: 코어 영향 최소화로 안정적 기능 추가

단점

  • 초기 세팅 부담: 각 애드온에 addon.json 작성 필요
  • 학습 곡선: 기존 extend 방식 대비 구조 변화
  • 운영 정책 필요: 네이밍/실행 순서 기준 수립 필요

디렉토리 구조

그누보드5/
└─ extend/
   └─ rb_addon.extend.php
└─ rb/
   └─ rb.addon/
      └─ sample-addon/
         ├─ addon.json
         ├─ addon.extend.php
         └─ adm/
            └─ sample_list.php

(필수) addon.json 파일 구조

{
  "name": "댓글 보상 & 자동 답댓글", /*애드온 이름*/
  "description": "사용자가 댓글을 달면 포인트를 지급하고 시스템 계정으로 답댓글을 남깁니다.", /*애드온 설명*/
  "version": "1.0.0", /*애드온 버전*/
  "developer": {
    "name": "HUMHAE", /*애드온 개발자*/
    "site": "https://example.com" /*애드온 개발자 웹사이트*/
  },
  "addon_setting": {
    "description": "사용가능한 치환문구 : {nick} : 닉네임, {point} : 지급포인트",
    "is_random": { "title": "랜덤지급여부", "value": true },
    "min_point": { "title": "최소 지급 포인트", "value": 5 },
    "max_point": { "title": "최대 지급 포인트", "value": 50 },
    "is_comment": { "title": "포인트 지급 댓글 사용 여부", "value": true },
    "comment_bot_name": { "title": "포인트 지급 댓글 작성자 닉네임 (ex. 댓글봇)", "value": "알림봇" },
    "comment_format": { "title": "답댓글 양식", "value": "{nick}님, 댓글 참여 보상으로 {point}포인트가 지급되었습니다. 감사합니다!" }
  },
  "admin_menu": {
      "000905": {                /* 메뉴관리번호(그누보드 규칙) */
        "title": "애드온 설정",        /* 관리자 메뉴명 */
        "file": "adm/sample_list.php"       /* 애드온 내부 경로 */
    }
  }
}

※ 관리자 메뉴 > 빌더설정 > 애드온관리 목록 정렬은 위 addon.json 정보를 기준으로 표시됩니다.

핵심 키 설명

addon_setting

애드온 사용자가 관리자 설정 페이지에서 직접 수정 가능한 값들을 나열합니다. 값 타입에 따라 자동으로 입력 폼(숫자, 체크박스, 텍스트)이 구성됩니다.

설정값 읽기 예:
<?php
// addon.extend.php
$bot = rb_setting_local('comment_bot_name');
$fmt = rb_setting_local('comment_format');
// ...
?>

민감 정보(API 키 등)는 PHP 상수/설정로 직접 선언하고, 간단한 옵션 위주로 addon.json을 활용하세요.

admin_menu

관리자 페이지에 메뉴가 필요한 애드온은 admin_menu를 정의하세요.

  • 메뉴관리번호: 그누보드 관례 사용 (예: 000905)
  • file: 애드온 폴더 내부 경로만 허용 (예: adm/sample_list.php)
  • title: 메뉴에 표시될 이름

마이그레이션 가이드 (1.0.0 → 1.0.1)

  1. 각 애드온 폴더에 addon.extend.php 생성 (기존 entry 파일 내용 이관)
  2. 기존 addon.json에서 entry 관련 키가 있었다면 삭제 또는 무시
  3. 사용자 설정이 필요한 옵션을 addon_setting 블록에 선언
  4. 관리자 전용 화면이 있다면 admin_menu에 메뉴 등록하고 파일을 애드온 폴더 내부 adm/ 하위에 배치
  5. 관리자 > 빌더설정 > 애드온관리에서 ON/OFF 및 설정값 저장 확인
참고

애드온 목록의 설정 버튼은 addon.jsonaddon_setting이 정의된 경우에만 활성화됩니다.

베스트 프랙티스 & 주의사항

  • 네이밍 규칙 수립: 전역 함수/상수/파일명에 접두사 사용 (rb_ 등)
  • 실행 순서 충돌 방지: 훅 사용 시 조건 분기(게시판/사용자/상태) 명확화
  • 민감 정보는 코드 내 정의: 절대 JSON에 저장하지 않기
  • 설정 검증: 관리자 입력값에 대해 형/범위 검증을 수행
  • 업데이트 시 변경 로그 유지: 문제 발생 시 롤백 지점 확보
참고

애드온 목록의 설정 버튼은 addon.jsonaddon_setting이 정의된 경우에만 활성화됩니다.