눈부시도록 아름다운 그래서 바라볼 수 없는

XE 디렉토리 구조

study/php 2013. 3. 19. 14:05

출처 : http://blog.nextcube.pe.kr/trackback/14


XpressEngine Directory Architecture
XpressEngine(이하 XE) 디렉토리 구조는 간단하게 되어있다.
전체적으로 XE 구동의 중추인 기능들은 모두 모듈화 되어 modules 폴더에 있으며, 이들 모듈들의 연동을 위해
혹은 구동을 위해 필요한 기본 상위클래스는 classes 폴더에 정의가 되어있다.
그리고 XE 전체에서 사용되어질 언어파일(lang)과 스타일시트파일(CSS), 자바스크립트파일(js) 등은 common 폴더에 있고 libs 폴더에는 각종 라이브러리가 정의되어있다.

버젼 1.2.0 이후부터 위젯들의 스타일을 쉽게 바꿀수 있는 widgetstyles 가 추가되었다.


XE 기본 디렉토리 구조
  • addons : addons 들을 모아둔 폴더
  • classes : XE 에서 각 모듈 및 위젯 에드온의 연동등의 기본적인 상위 클래스를 모아둔 폴더
  • common : XE home 폴더 이하에서 사용되는 기본적인 설정
  • config : XE 기본 설정
  • layouts : 레이아웃 들을 모아둔 폴더
  • libs : XE 신버젼의 ftp 설치를 위한 라이브러리 폴더
  • modules : XE 모듈들을 모아둔 폴더
  • widgets : XE 위젯들을 모아둔 폴더
  • widgetsstyles : XE 위젯들의 기본 스타일을 모아둔 폴더(1.2.0 이후 버전이 추가)


 


addons 디렉토리 구조

addons 디렉토리는 XE가 지원하는 에드온들이 모여있다.
에드온은 스위치방식(On/Off)으로 웹에서 활용되는 기능들을 설정한다.

간단히 rainbow_link 에드온을 On 하면 XE 내의 모든 링크(link)에 마우스가 오버되었때, CSS에 지정된 스타일을 무시하고 링크텍스트의 색이 무지개색으로 동적으로 변하게된다.

옆의 리스트는 XE 1.2.1 버젼에서 기본으로 지원하는 에드온 들이며,
사용자 정의로 추가도 가능하다.


 



classes 디렉토리 구조

classes 디렉토리는 XE가 필요로 하는 클래스들의 기초 상위 클래스들이 정의되어있다. XE 모듈들이나 위젯들 에드온들이 이 상위클래스들을 상속받아 구현된다.
XE 구동의 기본 뿌리.

  • context 클래스 : Request Argument/환경변수등의 모든 Context를 관리
  • db 클래스 : 모든 db관련 클래스의 상위클래스

XE는 DB 사용을 xml을 이용한다.
xml의 종류에는 query xml, shema xml 이 있으며
query xml의 경우 DB::executeQuery() method를 이용하여 xml파일을 php code로 compile한 후에 실행이 된다
query xml은 고유한 query id를 가지며 생성은 module에서 이루어진다.


  • extravar 클래스 : 게시글, 회원등에서 사용하는 학장변수를 핸들링하는 클래스
  • httprequest 클래스 : 다른 서버에 HTTP Request를 전송하고 result를 받아오는 클래스
  • module 클래스 : module 클래스의 상위 클래스인 ModuleObject, ModuleHandler 정의

ModuleObject.php 는 module 의 상위클래스이며 모듈을 생성하기 위한 클래스
ModuleHandler.php 는 모듈 핸들링을 위한 Handler 정의, 모듈을 실행시키기위한 클래스

  • object 클래스 : 모듈간의 데이터를 주고 받기위한 클래스

XE의 모든 모듈들은 Object를 상속하며 Object의 error, message, variables 를 이용하여 통신을 하게 된다

  • optimizer 클래스 : JS/CSS파일등을 특정한 규칙에 맞게 하나의 파일로 만들어서 client에서 가져갈 수 있도록 성능향상을 지원하는 클래스

일단 내부적인 코드가 아무리 튜닝이 되어도 모듈/애드온/위젯/에디터컴포넌트등 각 요소들의 JS/CSs파일들을 잘라서 호출하는 구조이기에 사용자의 브라우저에서는 최소 10이상의 파일을 별도로 서버에 요청을 하게 된다.
이를 방지하기 위해서 서버내의 로컬 파일일 경우 하나로 묶어서 클라이언트에서 가져갈 수 있도록 하여 그 효과를 증대시킴.

  • page 클래스 : 게시판의 페이지 네비게이션을 담당하는 클래스
  • templatehandler 클래스 : 정규표현식을 이용하여 템플릿 파일을 컴파일하여 php코드로 변경하고 이 파일을 caching하여 사용할 수 있도록 하는 템플릿 컴파일러
  • widgethandler 클래스 : 위젯의 실행을 담당하는 클래스
  • xml 클래스 : db 클래스의 xml 연동을 위한 클래스, XmlJsFilter, XmlParser, XmlQueryParser. GeneralXmlParser 가 있다

XmlJsFilter.php : form 입력값을 검사할때 사용하는 filter xml문서를 해석하여 js파일로 만듬
XmlParser.php : xmlrpc를 해석하여 object로 return 하는 simple xml parser
XmlQueryParser.php : query xml을 파싱하여 캐싱을 한 후 결과를 return
GeneralXmlParser.php : XE에서 쓰는 XmlParser보다 좀더 범용으로 쓸 수 있는 Parser

 


common 디렉토리 구조
  • css : XE 내의 전체에서 사용되는 스타일시트를 정의
  • js : XE 내의 전체에서 사용되는 자바스크립트를 정의
  • lang : XE 내이 전체에서 사용되는 언어파일을 정의
  • tpl : XE 내이 전체에서 사용되는 기본 템플릿 정의


 


config 디렉토리 구조
XE 전역에서 사용될 함수를 정의
  • config.inc.php : 설정관련 함수 정의
  • func.inc.php : 일반 함수 정의


 


layouts 디렉토리 구조
XE를 이용하여 홈페이지, 블로그, 카페를 구축할때 사용되는 레이아웃
기본적으로 XE 기본 블로그 레이아웃, XE 기본 홈페이지 레이아웃, XE 기본 카페 레이아웃이 제공된다.


 


 
libs 디렉토리 구조

XE 신버젼의 ftp 설치를 위한 라이브러리
  • FilePHPCore : FireBug 에서 DebugPrint 를 출력하기 위한 프로그램
  • PEAR : PHP Extension and Application Repository


 


modules 디렉토리 구조

XE의 중추 기능들의 모듈들을 모아둔 폴더
XE는 modules 들간의 통신들이 object 로 하기때문에 모든 module 들은 ModuleObject 를 상속한다.

  • moduleName.admin.controller.php : 관리자모드의 모듈에 대한 기능을 구현
  • moduleName.admin.model.php : 관리자모드의 모듈에 대한 기본 모델 구현
  • moduleName.admin.view.php : 관리자모드의 모듈에 대한 페이지 보기 구현
  • moduleName.admin.item.php : 관리자모드의 모듈에 대한 기본 모듈 객체 클래스
  • moduleName.class.php : 모듈에 대한 기본 클래스
  • moduleName.item.php : 모듈에 대한 일반사용자들의 기본 모듈객체 클래스
  • moduleName.model.php : 모듈에 대한 일반사용자들의 기본 모델 클래스
  • moduleName.controller.php : 모둘에 대한 일반 사용자들의 기능을 구현
  • moduleName.view.php : 모둘에 대한 일반 사용자들의 페이지 보기 구현

 


 


 




 


 

widgets 디렉토리 구조
XE에서 사용하는 위젯들을 모아둔 디렉토리
각 위젯들은 XE에서 부가적으로 사용되는 기능들이다.

위젯은 사용자가 만들어 추가할수 있다.

위젯폴더이름.class.php 파일로 위젯을 구현한다.
conf 폴더에 info.xml 파일로 위젯의 기본정보를 구성하고
skin 폴더에 각 스킨명 폴더로 위젯의 스킨을 정의한다.




















 




widgetstyles 디렉토리 구조
XE 1.2.1 에 새롭게 추가된 디렉토리
위젯을 설정할때 그 스타일을 손쉬게 설정할수 있다.

skin.xml 파일로 위젯스킨스타일을 설정하고
widgetstyle.html 파일로 스타일을 구현한다.

위젯의 skin 폴더는 위젯 자체의 구조의 편집이고
widgetstlyes 은 위젯의 배경이나 틀모양의 설정이라고 보면 되겠다.




Posted by 휘루걸음

댓글을 달아 주세요