거 xe 모듈 개발하기 좋은 날씨네 - xecon + phpfest 2014
DESCRIPTION
거 XE 모듈 개발하기 좋은 날씨네 - XECon + PHPFest 2014 2014.11.08TRANSCRIPT
거 XE 모듈 개발하기 좋은 날씨네 게시판 하나는 만들 수 있게 해드릴게
신승엽
NHN Entertainment
2014.11.08 Session 2-4 XECon + PHPFest 2014
신승엽 @ NHN Entertainment • SocialXE 개발 (2011) • XE Core 개발 (~2013)
모듈 구상 목표
XE의 기본 요소들을 활용하는 간단한 모듈을 제작
요구사항 Document, Comment 모듈 사용
사이트 메뉴 편집과 호환
나의 게시판
목록 보기
내용 보기
글 쓰기
댓글 쓰기
사이트 메뉴 편집을 통해 추가/설정
모듈 폴더 생성
XE ROOT/modules/myboard 폴더 생성
info.xml 생성
MODULE ROOT/conf/info.xml 파일 생성
http://me2.do/5nfH4nyf
module.xml 생성
MODULE ROOT/conf/module.xml 파일 생성
권한 관련 정보
액션 실행 퍼미션 관련 정보
모듈이 가진 액션 관련 정보
http://me2.do/54gObkCW
module.xml 생성
MODULE ROOT/myboard.class.php 파일 생성
XE의 모든 모듈 class 파일은 ModuleObject를 상속 받아야 함
XE 초기 설치/ 쉬운설치 시에 호출됨
모듈 업데이트 여부를 체크하기 위해 호출 됨
http://me2.do/GPf5odjx
모듈 업데이트 시 호출 됨
모듈 삭제 시 호출 됨 모듈이 쉬운 설치에 올라가 있을 때만 삭제가 가능
http://me2.do/GPf5odjx
메뉴 타입으로 등록
MODULE ROOT/myboard.class.php 파일 수정
http://me2.do/5Mfg7fNd
트리거를 정보를 받는 메소드
if (트리거가 없다) { 업데이트가 필요하다 }
모듈 업데이트 체크 시...
메뉴 타입으로 등록
MODULE ROOT/myboard.model.php 파일 생성
http://me2.do/xuYhaz0i
클래스 이름 규칙 파일명 클래스명 상위 클래스
myboard.class.php myboard ModuleObject
myboard.admin.controller.php myboardAdminController myboard
myboard.admin.model.php myboardAdminModel
myboard.admin.view.php myboardAdminView
myboard.controller.php myboardController
myboard.model.php myboardModel
myboard.view.php myboardView
메뉴 타입으로 등록 지금까지 잘 따라왔다면 관리자 페이지 접속 시
모듈 업데이트가 표시 됨
메뉴 타입으로 등록 업데이트 후 사이트 메뉴 편집으로 접속한 후 메뉴 추가를 눌러보면
'나의 게시판'이 추가된 것을 확인할 수 있음
권한 설정 만들기
MODULE ROOT/conf/module.xml 파일 수정
http://me2.do/59pJ1jtr
http://me2.do/59pJ1jtr
코드에서 사용할 이름 기본 권한 설정 - guest: 모든 사용자 - member: 로그인 사용자 - manager: 관리자 권한 체크를 자동으로 해주진 않는다
코드에서 직접 처리
권한 설정 만들기
간단 설정 만들기
MODULE ROOT/conf/module.xml 파일 수정
Front에서 요청할 수 있는 모듈의 특정 액션에 대한 정보
true이면 간단 설정용으로 사용한다는 의미이며 응답은 설정을 위한 HTML
http://me2.do/GOBAs7xo
액션에 사용할 '퍼미션' - 퍼미션은 '권한1'과는 다른 개념 - 해당 액션의 최소한 '권한2' - 액션 실행 전 자동 체크
퍼미션 적용할 액션 이름
적용할 퍼미션 - guest - member - manager
http://me2.do/GOBAs7xo
액션 이름 규칙 파일명 접두어 결과
myboard.admin.controller.php procMyboardAdmin procMyboardAdminXxxx
myboard.admin.model.php getMyboardAdmin getMyboardAdminXxxx
myboard.admin.view.php dispMyboardAdmin dispMyboardAdminXxxx
myboard.controller.php procMyboard procMyboardXxxx
myboard.model.php getMyboard getMyboardXxxx
myboard.view.php dispMyboard dispMyboardXxxx
간단 설정 만들기
MODULE ROOT/myboard.admin.model.php 파일 생성
http://me2.do/5MfEonvo
여기서 할일 - 모듈 정보, 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 컴파일한 결과를 반환
김예솔님의 생일을 축하드립니다. 1월 10일에 태어난 신승엽님! 생일을 진심으로 축하드립니다. 생일이신 회원님을 위한 혜택...
홍경원님의 생일을 축하드립니다. 8월 14일에 태어난 신승엽님! 생일을 진심으로 축하드립니다. 생일이신 회원님을 위한 혜택...
템플릿?
출력 내용을 미리 준비해 두고 필요한 부분만 대치하여 사용
메일 머지 기능과 유사
[NAME]님의 생일을 축하드립니다. [DATE]에 태어난 [NAME]님! 생일을 진심으로 축하드립니다. 생일이신 회원님을 위한 혜택...
NAME DATE
신승엽 4월 23일
홍경원 8월 14일
김예솔 1월 10일
신승엽님의 생일을 축하드립니다. 4월 23일에 태어난 신승엽님! 생일을 진심으로 축하드립니다. 생일이신 회원님을 위한 혜택...
미리 준비된 내용 Data 결과 머지
템플릿? 미리 준비된 내용: 템플릿
Data: Context 변수 머지: 템플릿 컴파일
템플릿 Context 변수 결과 컴파일
http://me2.do/5MfEonvo
여기서 할일 - 모듈 정보, 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 컴파일한 결과를 반환
모듈 번호 상세 설정 URL
http://me2.do/5MfEonvo
http://me2.do/5MfEonvo
모듈 번호 상세 설정 URL
여기서 할일 - 모듈 정보, 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 컴파일한 결과를 반환
모듈의 정보를 반환 모듈의 설정을 반환
http://me2.do/5MfEonvo
여기서 할일 - 모듈 정보, 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 컴파일한 결과를 반환
템플릿 변수를 세팅하는 메소드
변수 이름 값
http://me2.do/5MfEonvo
여기서 할일 - 모듈 정보, 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 컴파일한 결과를 반환
템플릿을 다루기 위한 클래스
특정 템플릿을 컴파일한 결과를 반환
간단 설정 만들기
MODULE ROOT/tpl/simple_setup.html 파일 생성
http://me2.do/FOxkPBoJ
간단 설정 만들기
MODULE ROOT/lang/lang.xml 파일 생성
http://me2.do/FYvjt1Tl
간단 설정 만들기
MODULE ROOT/myboard.admin.controller.php 파일 생성
http://me2.do/GZta9W7q
http://me2.do/GZta9W7q
여기서 할일 - 정상적인 요청인지 확인한 후 - 설정을 저장
if (module_srl에 해당하는 모듈이 myboard가 아니면) { 잘못된 요청 }
http://me2.do/GZta9W7q
여기서 할일 - 정상적인 요청인지 확인한 후 - 설정을 저장
개별 모듈에 대한 설정을 저장하는 메소드
간단 설정 만들기
XE Control Path
Context 초기화
실행 모듈 결정
모듈 실행
결과 출력
요청
응답
XE Control Path
요청 index.php?act=procMyboardAdminUpdateSimpleSetup
XE Control Path
요청 Context 초기화
XE Control Path
요청 Context 초기화
실행 모듈 결정
procMyboardAdminUpdateSimpleSetup
XE: 내가 실행할 모듈은...
Type은 Controller
Module은 Myboard
Admin 계열이군
액션 이름 규칙 파일명 접두어 결과
myboard.admin.controller.php procMyboardAdmin procMyboardAdminXxxx
myboard.admin.model.php getMyboardAdmin getMyboardAdminXxxx
myboard.admin.view.php dispMyboardAdmin dispMyboardAdminXxxx
myboard.controller.php procMyboard procMyboardXxxx
myboard.model.php getMyboard getMyboardXxxx
myboard.view.php dispMyboard dispMyboardXxxx
클래스 이름 규칙 파일명 클래스명 상위 클래스
myboard.class.php myboard ModuleObject
myboard.admin.controller.php myboardAdminController myboard
myboard.admin.model.php myboardAdminModel
myboard.admin.view.php myboardAdminView
myboard.controller.php myboardController
myboard.model.php myboardModel
myboard.view.php myboardView
XE Control Path
요청 Context 초기화
실행 모듈 결정
XE: 내가 실행할 모듈은...
myboard.admin.controller.php를 include하면 되고 필요한 클래스는 myboardAdminController구나!
XE Control Path
요청 Context 초기화
실행 모듈 결정
myboardAdminController의 procMyboardAdminUpdateSimpleSetup 메서드 실행
모듈 실행
XE Control Path
요청 Context 초기화
실행 모듈 결정
모듈 실행
결과 출력 응답
글 쓰기 화면 만들기
MODULE ROOT/conf/module.xml 파일 수정
해당 액션이 반드시 mid를 가지고 실행되어야 할 경우 false로 세팅 이 속성을 사용하지 않으면 보안 문제가 생길 수 있음
http://me2.do/FecSNlje
글 쓰기 화면 만들기
MODULE ROOT/myboard.view.php 파일 생성
http://me2.do/GdsHTOaw
여기서 할일 - 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 파일을 세팅
액션 실행 전 먼저 실행되는 메소드
http://me2.do/GdsHTOaw
http://me2.do/GdsHTOaw
여기서 할일 - 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 파일을 세팅
http://me2.do/GdsHTOaw
여기서 할일 - 모듈 설정을 가져와서 - 템플릿에서 사용할 수 있도록 세팅하고 - 템플릿 파일을 세팅
PC 스킨 경로로 템플릿 경로 설정
액션명에서 접두어만 제외하고 템플릿 파일명으로 사용
http://me2.do/GdsHTOaw
글 쓰기 화면 만들기
MODULE ROOT/skins/default/skin.xml 파일 생성
skins 폴더 아래 스킨 위치 기본 스킨 폴더명은 무조건 default
글 쓰기 화면 만들기
MODULE ROOT/skins/default/_head.html 파일 생성
http://me2.do/5ZfB1VaH
글 쓰기 화면 만들기
MODULE ROOT/skins/default/Write.html 파일 생성
http://me2.do/xKdaLajQ
현재 위치에 다른 템플릿 삽입
XE 템플릿에서만 사용되는 가상 태그
cond 속성 조건에 맞을 경우에만 태그가 표시 됨
글 쓰기 화면 만들기
글 쓰기 처리 만들기
MODULE ROOT/conf/module.xml 파일 수정
http://me2.do/IGToqmv4
글 쓰기 처리 만들기
MODULE ROOT/myboard.controller.php 파일 생성
여기서 할일 - 권한 체크하고 - 데이터를 준비한 후 - document 모듈에 등록하고 - 글보기 화면으로 이동
http://me2.do/xLoLzp02
http://me2.do/xLoLzp02
여기서 할일 - 권한 체크하고 - 데이터를 준비한 후 - document 모듈에 등록하고 - 글보기 화면으로 이동
http://me2.do/xLoLzp02
여기서 할일 - 권한 체크하고 - 데이터를 준비한 후 - document 모듈에 등록하고 - 글보기 화면으로 이동
http://me2.do/xLoLzp02
여기서 할일 - 권한 체크하고 - 데이터를 준비한 후 - document 모듈에 등록하고 - 글보기 화면으로 이동
http://me2.do/xLoLzp02
여기서 할일 - 권한 체크하고 - 데이터를 준비한 후 - document 모듈에 등록하고 - 글보기 화면으로 이동
http://me2.do/xLoLzp02
글 보기 화면 만들기
MODULE ROOT/conf/module.xml 파일 수정
글 보기 화면 만들기
MODULE ROOT/myboard.view.php 파일 수정
http://me2.do/G97uVvrl
http://me2.do/xO6tyuuN
여기서 할일 - 권한 체크하고 - document 모듈에서 글을 가져오고 - 조회수를 증가시키고 - 템플릿을 지정한다
http://me2.do/xO6tyuuN
http://me2.do/xO6tyuuN
여기서 할일 - 권한 체크하고 - document 모듈에서 글을 가져오고 - 조회수를 증가시키고 - 템플릿을 지정한다
http://me2.do/xO6tyuuN
여기서 할일 - 권한 체크하고 - document 모듈에서 글을 가져오고 - 조회수를 증가시키고 - 템플릿을 지정한다
http://me2.do/xO6tyuuN
여기서 할일 - 권한 체크하고 - document 모듈에서 글을 가져오고 - 조회수를 증가시키고 - 템플릿을 지정한다
http://me2.do/xO6tyuuN
여기서 할일 - 권한 체크하고 - document 모듈에서 글을 가져오고 - 조회수를 증가시키고 - 템플릿을 지정한다
글 보기 화면 만들기
MODULE ROOT/skins/default/View.html 파일 생성
http://me2.do/5eEkr53g
글 보기 화면 만들기
글 보기 화면 만들기
MODULE ROOT/myboard.view.php 파일 수정
http://me2.do/x4XqDrqn
여기서 할일 - 권한 체크하고 - document 모듈에서 글 목록을 가져오고 - 템플릿을 지정한다
http://me2.do/x4XqDrqn
http://me2.do/x4XqDrqn
여기서 할일 - 권한 체크하고 - document 모듈에서 글 목록을 가져오고 - 템플릿을 지정한다
http://me2.do/x4XqDrqn
여기서 할일 - 권한 체크하고 - document 모듈에서 글 목록을 가져오고 - 템플릿을 지정한다
http://me2.do/x4XqDrqn
여기서 할일 - 권한 체크하고 - document 모듈에서 글 목록을 가져오고 - 템플릿을 지정한다
글 보기 화면 만들기
MODULE ROOT/skins/default/List.html 파일 생성
http://me2.do/x4XqDrqn
http://me2.do/x4XqDrqn
글 보기 화면 만들기
못 다한 이야기...
XE 모듈 개발 강좌 참고
http://www.xpressengine.com/learn/22801598