코드이그나이터 기반 PHP 오픈소스 게시판 : 씨아이보드

[씨아이보드] 씨아이보드 디렉토리구조 이해하기

씨아이보드의 디렉토리 구조를 설명드립니다.

 

_system

코드이그나이터에서 제공하는 소스파일의 core 파트입니다. application 에서 대부분 확장하여 사용가능하므로 _system 디렉토리는 수정할 필요가 없습니다. 원래 CodeIgniter 배포판은 system 디렉토리로 배포하나, 수정할 일이 정말 거의 없는 디렉토리이므로 한쪽으로 몰기 위해 일부러 _ 를 붙였습니다.

system 디렉토리명을 변경하고 싶으시면, index.php 파일을 열으셔서 

$system_path = '_system';

의 값을 수정하시면 됩니다.

 

application

실제 MVC  중 V 를 제외한 M 과 C 및 다른 기타 부분을 이부분에서 담당하고 있습니다. 원래 CodeIgniter 정식 배포판에서는 V 부분인 views 디렉토리도 application 디렉토리에 포함하여 배포하고 있으나, 씨아이보드에서는 view 부분을 application 디렉토리의 바깥으로 빼어 좀더 구별가게 하였습니다.

application 디렉토리명을 변경하고 싶으시면, index.php 파일을 열으셔서 

$application_folder = 'application';

의 값을 수정하시면 됩니다.

 

 

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 파일을 열으셔서 

$view_folder = 'views';

의 값을 수정하시면 됩니다.

 

 

 

이상으로 씨아이보드 디렉토리 구조였습니다.

 

 

 

3
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오톡으로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

팁&테크

번호 제목 글쓴이 날짜 조회수
공지 Github 운영을 시작합니다 +8 icon 관리자 11-19 541
공지 씨아이보드 3 배포 안내 +15 icon 관리자 11-09 896
46 씨아이보드 다음 juso.js 파일이 로드되지 않았습니다. ceoseo 12-04 67
45 서버 APM AUTO INSTALL V 0.2.9 +1 icon 아파치 11-26 105
44 씨아이보드 일단 erd그렸습니다. +13 icon Rido 11-10 222
43 씨아이보드 CIBOARD 설치가 안됩니다. 답변 부탁드립니다. +3 백경우 11-01 206
42 씨아이보드 스마트에디터 파일업로드시 도메인부분을 제거하고 이미지 태그 등록 +2 꽃이피는첫걸음 10-18 172
41 씨아이보드 비밀글 열람 권한 지정 옵션 꽃이피는첫걸음 10-15 115
40 씨아이보드 post에 글주소 클립보드 복사기능 대체(크롬에서 정상작동) +1 꽃이피는첫걸음 10-05 144
39 씨아이보드 일반페이지(document)에서 이미지맵 적용하기 꽃이피는첫걸음 10-02 122
38 씨아이보드 CIBOARD에 summernote 에디터 추가 +3 BOSS 08-03 517
37 씨아이보드 날짜를 연도까지 나오게 하기.. +1 마젠토 11-10 1,813
36 씨아이보드 디렉토리 구조 이해하기 +4 icon 해피정 08-17 2,907
35 씨아이보드 utf8mb4 로 설치하기 (2017-08-11 수정) icon 해피정 08-11 1,539
34 씨아이보드 eclipse (neo, oxygen) 에서 CI, CIBOARD au… 하마쿵 07-25 1,709
33 씨아이보드 강제로 www 없애고 https로 이동하게 하기 +1 싸나이 07-17 1,976
32 씨아이보드 The action you have requested is not all… +1 싸나이 07-17 1,323
31 씨아이보드 CIBOARD 설치화면이 뜨지 않고 백지만 뜰 경우 해결방법 +1 싸나이 07-17 1,304
30 씨아이보드 베이직 1.6.7 이하 버전에서 씨아이보드 2.0 으로 업그레이드 방법 icon 관리자 06-21 1,625
29 씨아이보드 초보팁] 모든 페이지에서 로그인여부 검사하기 할때 주의 할점. 발자취 10-03 4,323
28 씨아이보드 게시판 추가필드로 검색하기( 커스터 마이징 ) 쎈돌 07-18 5,822
27 씨아이보드 휴대폰본인인증, 아이핀본인인증 기능 런칭 icon 관리자 04-08 15,394