개요
애드온(addon)은 라이믹스와 XE에서 페이지가 처리되는 과정의 특정 지점에 끼어들어 동작을 바꾸거나 기능을 덧붙이는 확장 요소이다. 게시판이나 회원처럼 독립적인 기능 단위를 담당하는 모듈과 달리, 애드온은 자체 화면이나 URL을 갖지 않고 이미 진행 중인 요청에 개입한다.
이 때문에 애드온은 비교적 작은 코드로 사이트 전반에 영향을 주는 기능을 구현할 수 있다. 본문의 URL을 자동으로 링크로 바꾸거나, 접속 통계를 기록하거나, 출력 직전의 HTML에 스크립트를 삽입하는 것이 대표적인 예이다.
동작 방식
애드온은 요청 처리 과정에서 코어가 정해 둔 호출 지점(called_position)마다 실행된다. 애드온 파일은 매번 전체가 실행되며, 파일 안에서 현재 호출 지점이 무엇인지 확인한 뒤 필요한 시점에만 동작하도록 작성한다.
라이믹스 코어가 사용하는 호출 지점은 다음 네 가지이다.
| 호출 지점 | 시점 | 코어 내 위치 |
|---|---|---|
before_module_init
|
모듈이 초기화되기 전. 요청 처리의 가장 이른 단계이다. | classes/module/ModuleHandler.class.php
|
before_module_proc
|
모듈의 실제 처리가 시작되기 전 | classes/module/ModuleObject.class.php
|
after_module_proc
|
모듈의 처리가 끝난 뒤. 처리 결과를 가공할 수 있다. | classes/module/ModuleObject.class.php
|
before_display_content
|
최종 HTML이 출력되기 직전 | classes/display/DisplayHandler.class.php
|
실제 애드온 코드는 대체로 다음과 같은 형태를 띤다.
if ($called_position == 'after_module_proc' && Context::getResponseMethod() == 'HTML')
{
// 이 지점에서만 수행할 작업
}
관리자 화면이나 검색엔진 크롤러에서는 동작할 필요가 없는 경우가 많으므로, Context::get('module') != 'admin'이나 !isCrawler() 같은 조건을 함께 확인하는 것이 일반적이다.
파일 구조
애드온은 라이믹스 설치 경로의 addons 폴더 아래에 애드온 이름과 같은 폴더를 만들어 배치한다.
addons/
└─ 애드온이름/
├─ 애드온이름.addon.php ← 실행되는 본체
└─ conf/
└─ info.xml ← 이름, 설명, 제작자, 설정 항목 등
conf/info.xml에는 여러 언어의 이름과 설명을 함께 넣을 수 있다. 코어에 포함된 애드온의 경우 한국어, 영어, 일본어, 중국어 등 여러 언어의 제목과 설명이 등록되어 있다.
코어 기본 애드온
라이믹스는 다음 애드온을 코어에 포함하여 배포한다.
| 애드온 | 설명 |
|---|---|
adminlogging |
관리자 활동 기록 |
autolink |
본문에 포함된 URL을 자동으로 링크로 변환 |
counter |
접속 정보 기록. 이 애드온을 켜야 접속 통계가 수집된다 |
member_extra_info |
회원 확장 정보 처리 |
photoswipe |
이미지 클릭 시 확대 보기 제공 |
point_level_icon |
포인트 등급 아이콘 표시 |
이 밖에 XE 시절 서드파티로 배포되던 본문 내 이미지 조절, 이미지 리사이즈, 리캡챠 등의 기능도 라이믹스 코어에 포함되어 있다. 자세한 내용은 라이믹스/XE와의 차이점 문서를 참고하자.
설치와 관리
애드온은 관리자 페이지 → 고급 → 애드온에서 사용 여부를 설정한다. 애드온마다 PC와 모바일에서의 사용 여부를 따로 지정할 수 있고, conf/info.xml에 설정 항목이 정의된 경우 관리자 화면에서 값을 입력할 수 있다.
새 애드온을 추가할 때는 FTP 또는 SFTP로 addons 폴더에 업로드한다. 이때 addons/이름/이름/파일들처럼 폴더가 이중으로 중첩되지 않도록 주의해야 한다.
2.1.34 이상에서는 공식 자료실에 등록된 자료를 관리자 화면에서 바로 설치하는 쉬운설치 기능을 이용할 수도 있다.[1]
사용할 수 없는 애드온
XE 시절 널리 쓰이던 애드온 가운데 상당수는 라이믹스에서 사용할 수 없다. 같은 기능이 이미 코어에 들어가 있거나, 코어와 충돌하여 다른 기능의 동작을 방해하기 때문이다. 이러한 자료는 블랙리스트로 처리되어 활성화되지 않는다.
블랙리스트에 오른 애드온과 그 대체 방법은 라이믹스/블랙리스트 문서에 정리되어 있다.
주의사항
애드온은 요청 처리 과정에 매번 개입하므로, 활성화된 애드온이 많아질수록 페이지 처리 시간이 늘어난다. 사용하지 않는 애드온은 비활성화하거나 삭제하는 것이 좋다.
또한 오래된 애드온은 최신 PHP에서 경고나 오류를 발생시킬 수 있다. 특히 PHP 8.x는 이전 버전에서 경고 수준이던 문제를 오류로 처리하므로, 오래된 자료를 사용할 때는 라이믹스 버전과 PHP 버전 호환성을 먼저 확인해야 한다.
애드온은 사이트의 모든 요청을 거쳐 가므로 사이트 데이터 전반에 접근할 수 있다. 신뢰할 수 있는 출처의 자료만 설치하는 것이 바람직하다.[1]