제목 | 아직도 개념정리가 잘 안되는 초보질문(다중게시판) | ||
---|---|---|---|
글쓴이 | 헛발이 | 작성시각 | 2009/11/03 15:59:02 |
|
|||
이렇게 편하게 질문하고 알게 되어 저야 좋치만 다들 여러분들의 덕분이라고 생각합니다. 조금만 개념이 생길때 까지만 기초질문을 해 보려 합니다.. 예전엔 다중으로 게시판을 만들게 되면 항상 가지고 다니는 변수 $tbl 속에 테이블명을 가지고 다니면서 게시판소스는 하나만 만들어 놓고 사용했는데.. 공개해주신 포럼 소스를 봐도 약간은 이해가 가려고 하지만... 주된 개념이 들어서질 않네요... 예를 들면 게시판 소스는 controllers/bbs/에 하나만 존재 하는것이고... routes.php에 정의 하거나 다른 조작방법으로 실제 path즉 도메인/bbs/index/가 아닌 도메인/테이블명/index/가 되는거 같은데요.. 좀더 구체적인 설명을 해 주시려면 귀찮으시겠죠? ㅋㅋ |
|||
다음글 | CI DB session 사용 중인데요. 이상 현상. (6) | ||
이전글 | 케이든님 계시나요? (5) | ||
변종원(웅파)
/
2009/11/03 17:06:05 /
추천
0
|
헛발이
/
2009/11/03 18:02:25 /
추천
0
http://도메인/테이블명/view/3
이렇게 해서 테이블명만 바꿔가면서 하나의 게시판으로 여러개를 사용하려면 디랙토리를 어떻게 처리 하는지가 점점 궁굼해 지네요.. ^^;; 스스로 찾아 보는게 오래 기억에 남겠죠? ^^;; ㅡ.ㅡ; |
변종원(웅파)
/
2009/11/03 19:38:37 /
추천
0
어렵게 생각하지 마시구요. ^^
테이블명변수=uri->segment(1) 이런 식으로 변수를 받아서 처리를 합니다. 프로그램은 하나이고 테이블명 변수, 메소드 변수로 받아서 처리를 하죠. $route['qna/(:any)'] = "board/index";그리고 config/routes.php를 보시면 qna, tip 등 각 게시판의 이름이 나열되어 있고 qna로 시작하는 주소가 들어오면 board 컨트롤러의 index method를 호출하라는 의미입니다. routes.php에 나열되어 있는 것 이외의 주소는 원래대로 해당 컨트롤러로 이동을 하구요. 게시판 테이블명으로 시작하는 주소만 게시판으로 연결을 시키는 것입니다. board.php의 index 메소드를 보시면 두번째 세그먼트(lists, view, write 등)에 해당하는 다른 메소드를 호출하여 그 역할을 해주게 됩니다. 그래서 qna/view/1340 이라면 board 컨트롤러의 index 메소드에서 $this->uri->segment(2)의 값인 view() 메소드를 호출하게 되는 겁니다. view 메소드 안에 보시면 게시판 내용을 불러올때 $this->uri->segment(1)인 qna와 $this->uri->segment(3)인 1340을 이용하여 내용을 불러오는 것을 보실 수 있습니다. function index() { switch($this->uri->segment(2)) { case 'lists': $this->lists(); break; case 'view': $this->view(); break; case 'write': $this->write(); break; case 'delete': $this->delete(); break; case 'edit': $this->edit(); break; case 'reply_edit': $this->reply_edit(); break; case 'download': $this->download(); break; default: $this->lists(); break; } }그리고 헷갈리실만한게 테이블명을 넘겨주는 부분이 없어서 그러는것 같네요. 기본정보들은 상수로 만들어서 사용합니다. board컨트롤러 생성자를 보시면 $rew = $this->db->get_where('board_list', array('name_en'=>'board_'.$this->uri->segment(1))); $item = $rew->row(); define('MENU_ID', $item->no); define('MENU_SKIN', $item->skin); define('MENU_BOARD_NAME', $item->name); define('MENU_BOARD_NAME_EN', $item->name_en); define('MENU_BOARD_PERM', $item->permission); define('MENU_BOARD_DETAIL_SETTING', $item->detail_setting);이런 부분이 있습니다. 이게 게시판 정보를 가져와서 상수로 선언한 겁니다. 이후 board컨트롤러와 관계된 모델, 뷰에서는 모두 상수를 쓰실 수 있습니다. 게시판 테이블명은 위에서 'MENU_BOARD_NAME_EN' 입니다. |
포럼의 소스는 CMS툴의 일부(게시판 플러그인)를 가져와서 컨버팅 작업을 한것이라
routes.php에 정의를 해서 사용을 했습니다. (빨리 오픈하려고 주소체계를 그대로 사용했습니다)
일반적인 게시판을 사용하신다면 예전처럼 도메인/bbs/list/no/3 이렇게 사용하시면 됩니다.
일반적으로 개발을 할때는 주소를 개발자가 미리 다 셋팅(머리속이나 개념상)을 해놓고 프로그래밍을
하기때문에 기존 주소체계(도메인/bbs/list/no/3)를 사용하면 되나 CMS는 게시판이던지 그외 어떤
플러그인이던지 동일한 주소체계에 대응을 해야해서 위 방식(도메인/테이블명/list)으로 사용하게
된겁니다.
그리고 주소를 현재 포럼처럼 쓸 경우 한가지 잇점이 있다면 주소가 무얼 의미하는지 명확해진다는 것이죠
위의 주소 보다는
이것이 더 직관적이 되는거죠.
거의 작업이 완료된 CMS툴의 경우 주소체계가
이렇게 되어있어서 1차분류가 product(상품), 2차분류가 car(자동차), 3차분류가 sonata(상세차종)일 경우
이렇게 접근이 됩니다.
이게 게시판인지 일반 html페이지인지는 프로그램에서 처리가 되고 일반사용자는 알 필요가 없죠.
화면에 나오기만 하면 되니까요. ^^
http://icms.kiissoft.com/helpdesk/notice/ 여기 참고하시면 이해가 빠르실 겁니다.