유저 자료실

2025.09.30 13:02

애드온 시스템 1.0.1

Uploaded Image



애드온 시스템 1.0.1
애드온 시스템 작동방식이 변경되었으며, 기존의 애드온들도 업데이트 해주시기 바랍니다.


1.0.1 변경된사항
 - 기존 extend 환경에서 실행 될 파일을 addon.json에서 직접 entry로 정의해주는 방식에서, 애드온 폴더내의 addon.extend.php 파일을 자동으로 불러오도록 변경되었습니다.
 - 애드온 설정 항목을 addon.json에 정의시, 관리자페이지에서 json 파일을 수정하여 사용자 설정이 가능하도록 추가되었습니다.





애드온 시스템이란?
기존의 extend환경에서 실행되는 프로그램(기능) 개발시 등 코어수정을 최소화 하기 위해 개발된 시스템입니다.


애드온 시스템 장점
 - 관리 편의성 : 라우터를 통해 관리자페이지를 통해 ON/OFF 토글을 통해 기능 작동 여부를 쉽게 관리할 수 있습니다.
 - 독립적 관리 구조 : 애드온마다 전용 폴더를 사용해 코드와 리소스를 분리 관리하므로, 파일 충돌 위험이 줄고 유지보수가 훨씬 수월합니다.
 - DB 의존성 최소화 : API 키 등 민감 정보를 제외한 사용자 설정값을 addon.json으로 관리하여, 별도 DB 작업 없이 손쉽게 사용자 환경을 구성할 수 있습니다.
 - 확장성 : 필요 시 새로운 기능을 추가하더라도 기존 코어 구조에 영향을 거의 주지 않으므로, 시스템 안정성을 유지하면서 확장할 수 있습니다.


애드온 시스템 단점
  •  - 초기 세팅 부담 : 새로운 기능 개발 시, 각 애드온에 대해 반드시 addon.json을 작성해야 하므로 초기에 다소 번거로울 수 있습니다.

  •  - 학습 곡선 : 기존 extend 방식만 사용하던 개발자에게는 구조와 사용 방식이 다소 낯설게 느껴질 수 있습니다.

  •  - 운영 정책 필요 : 여러 애드온이 동시에 동작할 경우, 기능 충돌을 방지하기 위한 네이밍 규칙이나 실행 순서 정책이 필요할 수 있습니다.






  • 애드온 디렉토리 구조
  • 디렉토리 구조
    그누보드5/ 
    └─ extend/ 
             └─ rb_addon.extend.php
    └─ rb/
             └─ rb.addon/





  • (필수) addon.json 파일 구조


  • addon.json (sample) 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}포인트가 지급되었습니다. 감사합니다!"
            }
        }
    }


  • 관리자 메뉴 - 빌더설정 - 애드온관리에 표시되는 애드온 목록은 위의 addon.json 파일을 기준으로 정렬됩니다.

  • 위의 JSON 키값중 혼동이 있을만한 키값에 대해서만 설명드리겠습니다.



  • addon_setting

  • 애드온을 사용하는 사용자가 애드온 설정 페이지에서 직접 설정이 가능한 항목(설정)에 대한 키를 나열합니다.

  • 설정키값은 addon.extend.php에서 <?php echo rb_setting_local('comment_bot_name');?> 와 같이 설정값을 불러올 수 있습니다.

  • value에 지정한 값타입에 따라 설정페이지에서 숫자(number), 체크박스(boolean true/false), 텍스트(text)에 맞춰 폼을 구성하게 됩니다. (사진참조)

  • addon.json 파일에 설정 파일을 저장하므로, API키 등 민감한 정보는 php 자체적으로 선언하기를 권장드리고 간단한 설정에 한해서 구성함을 권장드립니다.


  • addon.json에 addon_setting에 설정항목을 정의한 경우, 애드온관리 페이지의 애드온 목록에서 설정버튼이 활성화 됩니다. (사진참조)

  • 1759203925_d95c0f6bcd904618_image.png

  • value에 따른 폼 구성

  • 1759203984_f3d6ceda1a3dbcee_image.png


  • admin_menu

  • 개발한 애드온이 관리자페이지에서 설정이 필요한 경우, addon.json의 admin_menu를 정의함으로써, 관리자 메뉴에 설정한 메뉴를 등록합니다.

  • 메뉴관리번호는 통상 그누보드에서 사용하는 규칙을 따릅니다. (100100, 200205 등)

  • file은 관리자페이지에서 출력할 파일의 경로입니다. 애드온에서 관리하는 관리페이지는 애드온 폴더 내에 위치하여야 관리자페이지 호출을 위한 라우터가 정상적으로 관리자 페이지를 출력합니다. 

  • rb/rb.addon/sample-addon/adm/sample_list.php -> "adm/sample_list.php" 기입

  • title은 메뉴에 출력될 메뉴 이름입니다.






  • 분명 생소한 기능일수도 있지만, 조금 시간이 지나다보면 장점이 더 많이 보일 시스템이라고 생각합니다.

  • 저 또한 공개했던 자료들을 가급적 애드온 기능으로 개발하여, 원본파일 혹은 코어파일수정을 최소화 한 기능으로 편하게 기능을 다운받으실 수 있도록 하겠습니다.





    • 공유링크 복사
      미니홈 쪽지 구독하기
      구독하고 알림받기

      댓글목록

      profile_image
      리빌더미니홈 1:1 대화하기  16시간 전

      안녕하세요.

      버전업 된 게시물의 처리가 불편하실것같습니다.
      자료실을 통합 하면서 버전관리 기능이 추가될 예정입니다.
      버전 기재와 업데이트 내용 추가기재, 게시물 점프 기능이 들어갈것같습니다.

      항상 좋은 자료 감사합니다.

      2025-09-30 13:07