개요[편집 / 원본 편집]
XpressEngine와 라이믹스에서 애드온(addon)은 페이지가 처리되는 과정의 정해진 지점에 끼어들어 동작을 바꾸거나 기능을 덧붙이는 확장 요소를 말한다.
모듈이 게시판이나 회원처럼 독립적인 기능 단위를 맡고 자체 화면과 URL을 갖는 것과 달리, 애드온은 자기 화면이 없다. 이미 진행 중인 요청에 개입할 뿐이다. 이 때문에 비교적 적은 코드로 사이트 전반에 영향을 주는 기능을 만들 수 있다는 것이 장점이자, 잘못 만들면 사이트 전체가 느려지거나 깨질 수 있다는 것이 단점이다.
본문의 URL을 자동으로 링크로 바꾸거나, 접속 통계를 기록하거나, 출력 직전의 HTML에 스크립트를 끼워 넣는 것이 대표적인 쓰임이다.
동작 방식[편집 / 원본 편집]
애드온 파일은 요청 처리 과정에서 코어가 정해 둔 호출 지점마다 통째로 실행된다. 그래서 애드온은 파일 안에서 $called_position 값을 확인하여 필요한 시점에만 동작하도록 작성한다.
| 호출 지점 | 시점 |
|---|---|
before_module_init |
모듈이 초기화되기 전. 요청 처리의 가장 이른 단계 |
before_module_proc |
모듈의 실제 처리가 시작되기 전 |
after_module_proc |
모듈의 처리가 끝난 뒤. 처리 결과를 가공할 수 있다 |
before_display_content |
최종 HTML이 출력되기 직전 |
실제 코드는 대체로 이런 형태이다.
if ($called_position == 'after_module_proc' && Context::getResponseMethod() == 'HTML')
{
// 이 지점에서만 수행할 작업
}
관리자 화면이나 검색엔진 크롤러에서는 동작할 필요가 없는 경우가 많으므로, Context::get('module') != 'admin'이나 !isCrawler() 같은 조건을 함께 확인하는 것이 일반적이다.
파일 구조[편집 / 원본 편집]
애드온은 설치 경로의 addons 폴더 아래에 애드온 이름과 같은 폴더를 만들어 배치한다.
addons/
└─ 애드온이름/
├─ 애드온이름.addon.php ← 실행되는 본체
└─ conf/
└─ info.xml ← 이름, 설명, 제작자, 설정 항목
conf/info.xml에는 여러 언어의 제목과 설명을 함께 넣을 수 있다.
애드온 찾기와 설치[편집 / 원본 편집]
찾기[편집 / 원본 편집]
라이믹스 자료실이나 Rhymix Auto Install Repository, 개발자의 깃허브 저장소 등에서 찾을 수 있다. XE 공식 자료실은 현재 이미지 출력이 되지 않는 등 관리가 되지 않고 있다.
자료를 고를 때는 호환성 정보를 반드시 확인하자. 오래된 애드온은 최신 PHP에서 동작하지 않거나, 라이믹스에서 블랙리스트로 차단되어 있을 수 있다.
설치[편집 / 원본 편집]
FTP 클라이언트로 설치 경로의 addons 폴더에 애드온 폴더를 업로드한다. 이때 addons/이름/이름/파일들처럼 폴더가 이중으로 중첩되지 않도록 주의해야 한다.
업로드한 뒤 관리자 페이지 → 고급 → 애드온에서 사용으로 설정해야 실제로 동작한다. PC와 모바일에서의 사용 여부를 따로 지정할 수 있다.
라이믹스 2.1.34 이상에서는 공식 자료실에 등록된 자료를 관리자 화면에서 바로 설치하는 쉬운설치를 이용할 수도 있다.
가온 위키의 애드온 문서[편집 / 원본 편집]
| 애드온 | 제작자 | 라이선스 | 라이믹스 블랙리스트 |
|---|---|---|---|
| 언어 자동 선택 | 기진곰 | LGPL v2 | 등재됨 (코어에 같은 기능 있음) |
| ZipperUpper! | 기진곰 | LGPL v2 | 등재됨 (코어에 스크립트 합치기 기능 있음) |
| 검색어 오타수정 애드온 | 즈베즈다 | GPL v2 | 등재되지 않음 |
라이믹스에서의 주의[편집 / 원본 편집]
XE 시절 널리 쓰이던 애드온 가운데 상당수는 라이믹스에서 사용할 수 없다. 같은 기능이 이미 코어에 들어가 있거나, 코어와 충돌하여 다른 기능의 동작을 방해하기 때문이다. 이러한 자료는 블랙리스트로 처리되어 활성화되지 않는다.
블랙리스트에 오른 애드온과 대체 방법은 라이믹스/블랙리스트 문서에 정리되어 있다.
또한 애드온은 요청 처리 과정에 매번 개입하므로, 활성화된 애드온이 많아질수록 페이지 처리 시간이 늘어난다. 사용하지 않는 애드온은 비활성화하거나 삭제하자.
라이믹스의 애드온 구조에 대한 자세한 설명은 라이믹스/애드온 문서를 참고하자.