2014년 03월 xe세미나 xe 애드온 개발 강좌(1/2)

24
XE 애드온

Upload: sol-kim

Post on 28-Nov-2014

2.473 views

Category:

Technology


7 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

XE 애드온

Page 2: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 이란?XE가 실행될 때 중간에 삽입되어 실행되는 프로그램 !중간에 삽입되는 과정을 후킹(hooking) 이라고 표현 !

애드온은 include로 중간에 삽입됨 아래는 ModuleHandler에서 애드온이 삽입되는 과정의 코드

Page 3: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온의 역할 및 특징스키마를 가질 수 없음 !모든요청에 대해서 애드온이 실행됨 !모듈이 동작함에 있어서 그 기능을 제한하거나 확장 !간단한 기능 추가를 위해 XE Core 또는 모듈을 수정하게 되면 버전을 업데이트할 때 어려움이 있기 때문에 애드온을 추가해서 원하는 기능을 구현

Page 4: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

XE 라이프 사이클URL에 접속한 순간부터 클라이언트에 응답을 보낸 순간까지 XE가 거치는 일련의 과정 !애드온 호출은 체크된 4개의 시점에서 발생 !각 호출 시점은 $called_position 변수로 구분됨

Page 5: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

$called_position (호출시점)$called_position은 애드온이 호출 되는 시점에 정의 됨 어느시점에 애드온이 호출되었는지 확인하기 위한 변수

Page 6: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 실행 방식 확인아래 나열된 클래스 메소드를 확인하면 좀더 자세한 애드온 구동방식을 살펴볼 수 있음

!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()

Page 7: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

$called_position 종류1. before_module_init 모듈을 선언하기 전에 addon을 실행 !2. before_module_proc 모듈을 실행하기 전에 addon을 실행act에 의해 정해진 동작을 수행하기 직전 !3. after_module_proc 모듈을 실행하고 완료된 직후 addon을 실행 !4. before_display_content 결과물 출력을 위한 처리 후 출력하기 전에 addon을 실행

Page 8: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

before_module_init

before_module_proc

after_module_proc

Page 9: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

$called_position 예시애드온에서 $called_position에 따른 사용예시 !counter 애드온 : before_module_init !member_communication 애드온 : before_module_proc !resize_image 애드온 : after_module_proc !point_level_icon 애드온 : before_display_content

Page 10: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

counter

counterController::counterExecute() 은 모듈 처리 작업으로부터 더이상 정보를 얻을 필요가 없으므로 before_module_init 을 사용 !다른 called_position을 사용하면 예외처리가 발생할 경우 counter가 집계되지 않는 문제가 있음

Page 11: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

member_communication

닉네임 클릭시 팝업 메뉴에 communication 관련 모듈기능을 추가하기 위한 애드온 !memberModel::getMemberMenu() 에서 메뉴를 추가하는 기능이 모듈 실행이 완료되기 전에 처리되므로 before_module_proc을 사용

Page 12: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

resize_image

노출될 페이지에 Context::loadFile()을 통해서 css, js 파일을 추가 !모듈을 처리하면서 페이지 이동등 예외 처리가 발생할 경우 실행되지 않아도 되는 애드온이기 때문에 after_module_proc을 사용

Page 13: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

point_level_icon

출력될 html에 div, span, a 태그에 있는 “member_숫자”가 포함된 문자열을 찾아 pointLevelIconTrans()을 실행 !DisplayHandler::printContent() 처리된 html 이 담겨져 있는 $output 변수에 대해서 변경해야 하기 때문에 before_display_content를 사용

Page 14: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 구성

Page 15: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 구성애드온 설치 위치 XE_PATH/addons/ 각 애드온은 애드온 이름의 폴더별로 정의되어 설치됨

!애드온 파일 구성 애드온_이름.addon.php : 애드온 기능 conf/info.xml : 애드온 정보 및 관리자 표시

!관리자 페이지 conf/info.xml 의 내용으로 처리됨 관리자에서 설정한 내용은 files/cache/addons 의 cache 파일과 xe_addons, xe_addons_site DB 테이블에 설정 값 저장

Page 16: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

설정 파일 conf/info.xml 구성

Page 17: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

/index.php?module=admin&act=dispAddonAdminIndex

Page 18: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)
Page 19: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

info.xml 의 extra_varsextra_vars 애드온에서 설정값을 만들기 위해 선언 xe_addons, xe_addons_site DB 테이블의 extra_vars 필드에 저장됨

!!!!name attribute는 폼 필드의 name attribute 를 설정 type attribute는 text, textarea, select의 폼 필드를 설정 !extra_vars를 통해 선언되고 관리자에서 설정된 값은애드온에서 $addon_info으로 접근할 수 있음

Page 20: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 파일 작성애드온_이름.addon.php !아래와 같이 시작 부분을 작성

파일명(@file), 설명(@brief), 작성자(@author)를 작성 !if(!defined(‘__XE__’)) exit(); XE를 통한 호출이 아닐 경우 동작하지 않기 위한 처리

Page 21: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

$called_position을 사용하는 코드 예시어떤 위치에서 애드온을 실행시킬지 아래와 같이 조건식으로 처리

Page 22: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

XML 쿼리 사용애드온에서 다른 모듈이 생성한 DB 테이블에 쿼리 사용 애드온 폴더 아래 queries 라는 폴더를 생성하고 XML쿼리문을 만듬

생성된 xml 쿼리는 executeQuery(‘addons.애드온_이름.쿼리ID’,$args); 으로 실행한다. executeQuery(‘addons.addon_ex.getDocumentCount’,$args);

Page 23: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

애드온 cache file

애드온을 사용함으로 체크하면 XE_PATH/files/cache/addons 에 설정 값을 저장site_srl 에 따라 pc, mobile의 설정 값을 따로 저장 !0pc.activated_addons.cache.php

Page 24: 2014년 03월 XE세미나 XE 애드온 개발 강좌(1/2)

감사합니다[email protected]