XE Core 1.4.3에서는 Mobile View가 기본 실행 경로에 포함되어서, 모듈에서 쉽게 모바일 화면을 꾸밀 수 있도록하였습니다.
이를 사용하기 위해 모바일 뷰의 동작원리와 모듈에서 어떤 일들을 처리해야하는 지를 이 문서에서 설명합니다.
Mobile View는 우선 현재 환경이 Mobile View를 사용해야하는 환경인지를 검사합니다. 이 기능은 ./classes/mobile/Mobile.class.php 에 정의되어있는 isFromMobilePhone함수를 이용하게 되는데요, 이 함수에서는 우선 전체 XE 설정에서 Mobile VIew를 사용하도록 했는지 (관리자 화면/Setting에서 변경 가능) 를 체크하고, User Agent등을 검사해서 Mobile 화면으로 이용해야하는 지를 점검하게 됩니다.
이후에 현재 실행해야할 Action이 View 인경우에 각 모듈의 mobile 클래스 (모듈명.mobile.php)에 현재 Action에 해당하는 함수가 정의되어 있다면 그 함수를 실행하고, 혹은 Mobile Class의 Action을 직접 부르는 경우도 conf/module.xml에 정의되어있는 Action이라면 이를 실행하게 됩니다.
이 때 module schema에 포함되어있는 Module의 정보에서 use_mobile이 "Y"인지 체크하게 됩니다. 만약 아니라면 일반 View화면을 보여줍니다.
Mobile View로 보여주기로 되었다면, 최종적으로 Display할 때 일반 Layout대신에 모바일 레이아웃 설정 (mlayout_srl)을 참조하여 모바일 레이아웃으로 보여주게 됩니다.
모듈에서는 일단 mobile 클래스를 만들어야합니다. 모듈명.mobile.php에 모듈Mobile 이라는 클래스를 만들어서 필요한 Action들을 함수로 정의하고, 실제 구현은 View모듈과 크게 다르지 않습니다.
View에서 skins/$module_info->skin을 참조했다면 대신 m.skins/$module_info->mskin을 참조하도록 하면 됩니다.
이를 통해 template path와 file을 정해주고 template을 만들어주면 XE core는 mobile 에서 접근하는 경우, 기존의 view대신 mobile view를 이용하여 화면을 보여주게 될 것 입니다.
처음 접근했을 때 View에서 보여주는 index action이 dispTestIndex라면 mobile클래스에 같은 이름의 함수를 구현해 놓으세요. 그렇게 되면 아무런 action명 없이 접근했을 때 해당 함수가 실행될 것 입니다. 이후의 action들은 view의 action과 이름을 갖게 해서 사용하셔도 되고 새로운 action을 conf/module.xml에 정의해도 됩니다.
모듈에 새로운 설정들이 추가 되었습니다. use_mobile, mlayout_srl, mskin인데요, 모듈을 생성하거나 설정을 변경하는 곳에서 이들에 대해 설정하는 것이 필요합니다. 자세한 내용은, page 모듈과 곧 배포될 board 모듈을 참조해주세요 ^^