씨아이보드 디렉토리구조 이해하기
- 어드민
- 3
- 13,427
- 글주소
- 08-10
씨아이보드의 디렉토리 구조를 설명드립니다.
_system
코드이그나이터에서 제공하는 소스파일의 core 파트입니다. application 에서 대부분 확장하여 사용가능하므로 _system 디렉토리는 수정할 필요가 없습니다. 원래 CodeIgniter 배포판은 system 디렉토리로 배포하나, 수정할 일이 정말 거의 없는 디렉토리이므로 한쪽으로 몰기 위해 일부러 _ 를 붙였습니다.
system 디렉토리명을 변경하고 싶으시면, index.php 파일을 열으셔서
[code]
$system_path = '_system';
[/code]
의 값을 수정하시면 됩니다.
application
실제 MVC 중 V 를 제외한 M 과 C 및 다른 기타 부분을 이부분에서 담당하고 있습니다. 원래 CodeIgniter 정식 배포판에서는 V 부분인 views 디렉토리도 application 디렉토리에 포함하여 배포하고 있으나, 씨아이보드에서는 view 부분을 application 디렉토리의 바깥으로 빼어 좀더 구별가게 하였습니다.
application 디렉토리명을 변경하고 싶으시면, index.php 파일을 열으셔서
[code]
$application_folder = 'application';[/code]
의 값을 수정하시면 됩니다.
application/cache
파일 캐시를 사용하시는 경우 그 캐시 파일이 이 디렉토리에 저장되게 됩니다. 캐시파일은 주기적으로 삭제하시면 도움이 됩니다.
관리자페이지에 로그인하셔서, 환경설정>오래된로그삭제>캐시삭제 메뉴에서 삭제가 가능합니다.
application/config
환경설정을 담당하는 변수가 들어있는 디렉토리입니다. 기본 배포버전에서 cb_admin_menu.php, cb_config.php 의 2개 파일이 추가되었습니다.
cb_admin_menu.php 는 관리자페이지 메뉴 구조를 저장하는 파일이며, cb_config.php 에서는 메일 발송관련 아이디와 패스워드가 저장되는 곳입니다.
그 외에 씨아이보드에서 사용되고 있는 대부분의 환경설정변수는 데이터베이스의 config 테이블에서 관리가 됩니다. 상당히 많은 환경변수가 선언되어있지만, 웹사이트를 접근할 때마다 매번 디비에서 정보를 가져오는 것이 아니라, 캐시화된 데이터에서 정보를 가져오게 하여, 디비 부하를 최대한 줄이는 것에 신경을 썼습니다.
application/controllers
실제 각 페이지의 주소부분과 컨트롤러 부분이 매칭이 됩니다.
예를 들면 마이페이지의 메인 주소는 http://www.ciboard.co.kr/mypage 인데, 이는 application/Mypage.php 파일 안에 선언된 Mypage 클래스 안의 index 함수를 호출하게 됩니다.
마이페이지의 포인트 페이지는 http://www.ciboard.co.kr/mypage/point 인데, 이는 application/Mypage.php 파일 안에 선언된 Mypage 클래스 안의 point 함수를 호출하게 됩니다.
그러나 항상 모든 주소와 컨트롤러명이 완벽하게 매칭되지는 않습니다.
실제로 씨아이보드의 공지사항 페이지 주소는 http://www.ciboard.co.kr/b/notice 인데, application/B.php 를 호출하지는 않습니다.
application/config/routes.php 가 그런 역할을 담당하는데요. 씨아이보드는 routes.php 안에 특별한 몇개의 routes 를 선언하여 자주 사용하는 주소 (게시판목록, 게시판글열람, 글쓰기, 글수정, RSS, 일반문서, FAQ 등) 페이지 등에 대하여 페이지 주소를 더 단축하여 깔끔하게 사용할 수 있게 도와주고 있습니다.
application/core
system/core 를 확장한 클래스들의 모음입니다.
application/helper
helper 는 클래스가 아닌 일반 함수들의 모음입니다. CB_ 로 시작하는 helper 들은 기존에 system 디렉토리에서 선언된 helper 들을 확장한 경우인 것이고, 그 외의 helper 들은 새롭게 선언된 함수들의 모음입니다.
application/hooks
페이지가 로드될 때마다 공통적으로 실행하고 싶은 로직을 이 디렉토리 안에 선언하고 application/config/hooks.php 에서 선언해주면 됩니다.
현재 씨아이보드는 2개의 클래스를 hooks 에서 사용하고 있습니다.
application/language
언어 패키지가 담겨있습니다. 아직 씨아이보드는 다국어를 정상적으로 지원하고 있지는 않습니다. 차후에 이 부분을 개발할 계획은 가지고 있습니다.
application/log
로그 테이터가 쌓이는 곳입니다. 개발할 때 용이하게 활용할 수 있습니다, log 데이터를 쌓이게 설정하실려면, application/config/config.php 안의 $config['log_threshold'] 의 값을 변경해주시면 됩니다.
application/migrations
디비 테이블 스키마 변경이 있을 시에 이 디렉토리에 그 변경내용을 저장하여 배포합니다. 차후에 씨아이보드 배포버전에 디비 테이블 스키마 변경이 있을 경우, 이 디렉토리에 그 내용을 기록해 배포할 예정입니다.
application/models
controller 와 디비테이블을 연결해주는 다리입니다. 즉 디비 쿼리들의 모음이라고 생각하시면 됩니다. model 을 설계하는 방법에는 여러가지가 있을 수가 있겠지만, 씨아이보드는 1테이블=1model 이라는 원칙을 가지고 배포하게 되었습니다. 즉, 설치된 테이블수 = 모델수 입니다.
assets
공통적으로 사용하는 css, js, images 를 이 디렉토리에 배포합니다.
plugin
플러그인들의 모음입니다. 현재 배포버전에는 editor, htmlpurifier, jwplayer, pg 등의 플러그인들이 담겨져 있습니다.
uploads
사용자가 업로드한 모든 첨부파일은 이 디렉토리에 저장됩니다. 아울러 자동으로 생성된 썸네일 이미지도 이 디렉토리 안에 cache 디렉토리에 저장이 됩니다.
views
스킨, 테마 등으로 불리우는 디렉토리입니다. 즉 실제 사용자에게 보여지는 html 부분들이 들어있는 디렉토리입니다.
관리자페이지에서 페이지별로 어떤 스킨을 사용할 것인지 쉽게 선택할 수 있게 하였습니다.
예를 들어 게시판 생성시 레이아웃, 스킨 을 선택할 수 있는데,
레이아웃 관련 파일들은 views/_layout 디렉토리 안에 있습니다. 배포판에는 _layout 디렉토리 안에 3개의 디렉토리가 있습니다. 즉 기본적으로 3개의 레이아웃 중에 하나를 선택하여 사용할 수 있다는 의미입니다.
게시판 스킨 파일들은 views/board 디렉토리에 있습니다. 배포판에는 views/board 안에 3개의 디렉토리가 있습니다. 즉 3개의 게시판 스킨 중에 선택하여 사용할 수 있다는 의미입니다.
스킨은 배포판 외에도 자유롭게 추가하여 사용 및 배포하실 수가 있습니다.
views 디렉토리명을 변경하고 싶으시면, index.php 파일을 열으셔서
[code]
$view_folder = 'views';[/code]
의 값을 수정하시면 됩니다.
이상으로 씨아이보드 디렉토리 구조였습니다.