2. 애드온 이란?
XE가 실행될 때 중간에 삽입되어 실행되는 프로그램
!
중간에 삽입되는 과정을 후킹(hooking) 이라고 표현
!
애드온은 include로 중간에 삽입됨
아래는 ModuleHandler에서 애드온이 삽입되는 과정의 코드
3. 애드온의 역할 및 특징
스키마를 가질 수 없음
!
모든요청에 대해서 애드온이 실행됨
!
모듈이 동작함에 있어서 그 기능을 제한하거나 확장
!
간단한 기능 추가를 위해 XE Core 또는 모듈을 수정하게 되면 버전을 업
데이트할 때 어려움이 있기 때문에 애드온을 추가해서 원하는 기능을 구현
4. XE 라이프 사이클
URL에 접속한 순간부터 클라이언
트에 응답을 보낸 순간까지 XE가
거치는 일련의 과정
!
애드온 호출은 체크된 4개의 시점
에서 발생
!
각 호출 시점은 $called_position
변수로 구분됨
6. 애드온 실행 방식 확인
아래 나열된 클래스 메소드를 확인하면 좀더 자세한 애드온 구동방식을 살
펴볼 수 있음
!
XE_PATH/classes/module/ModuleHandler.class.php
ModuleHandler::ModuleHandler()
!
XE_PATH/classes/module/ModuleObject.class.php
ModuleObject::proc()
!
XE_PATH/classes/display/DisplayHandler.class.php
DisplayHandler::printContent()
7. $called_position 종류
1. before_module_init
모듈을 선언하기 전에 addon을 실행
!
2. before_module_proc
모듈을 실행하기 전에 addon을 실행
act에 의해 정해진 동작을 수행하기 직전
!
3. after_module_proc
모듈을 실행하고 완료된 직후 addon을 실행
!
4. before_display_content
결과물 출력을 위한 처리 후 출력하기 전에 addon을 실행
11. member_communication
닉네임 클릭시 팝업 메뉴에 communication 관련 모듈기능을 추가하기
위한 애드온
!
memberModel::getMemberMenu() 에서 메뉴를 추가하는 기능이 모
듈 실행이 완료되기 전에 처리되므로 before_module_proc을 사용
13. point_level_icon
출력될 html에 div, span, a 태그에 있는 “member_숫자”가 포함된 문자
열을 찾아 pointLevelIconTrans()을 실행
!
DisplayHandler::printContent() 처리된 html 이 담겨져 있는
$output 변수에 대해서 변경해야 하기 때문에 before_display_content
를 사용
15. 애드온 구성
애드온 설치 위치
XE_PATH/addons/
각 애드온은 애드온 이름의 폴더별로 정의되어 설치됨
!
애드온 파일 구성
애드온_이름.addon.php : 애드온 기능
conf/info.xml : 애드온 정보 및 관리자 표시
!
관리자 페이지
conf/info.xml 의 내용으로 처리됨
관리자에서 설정한 내용은 files/cache/addons 의 cache 파일과
xe_addons, xe_addons_site DB 테이블에 설정 값 저장
19. info.xml 의 extra_vars
extra_vars
애드온에서 설정값을 만들기 위해 선언
xe_addons, xe_addons_site DB 테이블의 extra_vars 필드에 저장
됨
!
!
!
!
name attribute는 폼 필드의 name attribute 를 설정
type attribute는 text, textarea, select의 폼 필드를 설정
!
extra_vars를 통해 선언되고 관리자에서 설정된 값은
애드온에서 $addon_info으로 접근할 수 있음
20. 애드온 파일 작성
애드온_이름.addon.php
!
아래와 같이 시작 부분을 작성
파일명(@file), 설명(@brief), 작성자(@author)를 작성
!
if(!defined(‘__XE__’)) exit();
XE를 통한 호출이 아닐 경우 동작하지 않기 위한 처리
22. XML 쿼리 사용
애드온에서 다른 모듈이 생성한 DB 테이블에 쿼리 사용
애드온 폴더 아래 queries 라는 폴더를 생성하고 XML쿼리문을 만듬
생성된 xml 쿼리는
executeQuery(‘addons.애드온_이름.쿼리ID’,$args);
으로 실행한다.
executeQuery(‘addons.addon_ex.getDocumentCount’,$args);
23. 애드온 cache file
애드온을 사용함으로 체크하면 XE_PATH/files/cache/addons 에 설
정 값을 저장
site_srl 에 따라 pc, mobile의 설정 값을 따로 저장
!
0pc.activated_addons.cache.php