제목 | ci세상님께 물어봤었는데..header, contents, footer 에 대해서 | ||
---|---|---|---|
글쓴이 | 터프키드 | 작성시각 | 2009/08/26 15:22:10 |
|
|||
해당 컨트롤러에서 (예를들어 blog 컨트롤러) $this->load->view('header'); $this->load->view('contents'); $this->load->view('footer'); 처럼 하시던데요 물론 레이아웃 하나로 쓰는 방식도 있구요 근데 저는 그렇게 view를 불러오는 방법이 궁금한게 아니구요 각각 header, footer 컨트롤러가 필요합니다; 컨트롤러 없이 blog 컨트롤러 안에서 header에 들어갈 php랑 footer에 들어갈 php코드랑 다 짜고 위에처럼 불러오면 되겠지만, 그럼 컨트롤러가 변경될때마다 같은 코드를 계속 중복해서 써줘야하잖아요 게다가 지금 만드는 사이트는 header footer가 섹션별로 달라집니다 (디자인도 바뀌지만 php코드들도..) 이럴땐 어떻게 구조를 세우는게 좋을지 감이 안오네요; 혹시 완전한 사이트 소스같은걸 구할 수있을까요? |
|||
다음글 | views 디렉토리를 루트로 빼려다 실패했습니다; (8) | ||
이전글 | Template_ 연동해보는데요 클래스생성이 안되는거 ... (6) | ||
터프키드
/
2009/08/26 16:41:08 /
추천
0
|
변종원(웅파)
/
2009/08/26 17:21:01 /
추천
0
컨트롤러 파일에서 아래 소스처럼 상단에 넣어놓으시면 됩니다. function _remap($method) { //상단 $this->load->view('admin/header_v', $this->data); //해당 메소드 호출 $this->{$method}(); //하단 $this->load->view('admin/footer_v'); } /** * function 값이 없을때. */ function usage() { //뷰만 선언 $this->load->view('usage_v'); } |
ci세상
/
2009/08/26 17:26:38 /
추천
0
1. 공용상수 http://codeigniter-kr.org/qna/view/754/page/2/ 웅파님 댓글 참조 2. 후킹 http://codeigniter-kr.org/tip/view/104/ => 스킨형태를 어떻게 지정하는지 잘 설명해 두셨습니다. ^^ 너무나 좋은 정보를 주시는 웅파님 ㅎㅎ |
터프키드
/
2009/08/26 18:05:02 /
추천
0
헉헉 지금 전에 웅파님이 이전 게시판에 올려두신 글 어찌어찌 찾아서
해외 컨트롤러에서 컨트롤러 불러오는 위젯을 발견했습니다 어찌저찌해서 구현 동작이 완료된것까지 했네요! 두분 신경써주셔서 감사드려요^^ 다른 방법도 있겠지만, 일단 되는걸로 빨리빨리 해야하기때문에..ㅠㅠ 아래는 제가 구현한 방법입니다 inc/header.php class Header extends MY_PageController { public function __construct() { parent::getInstance(); } function index() { $this->template_->define('header', 'header_view.php'); $this->template_->assign('title', '아이어러너너어리'); $this->template_->print_('header'); } } inc/footer.php class Footer extends MY_PageController { public function __construct() { parent::getInstance(); } function index() { $this->template_->define('footer', 'footer_view.php'); $this->template_->assign('copyright', '그런쇼쇼쇼'); $this->template_->print_('footer'); } } main.php (최초 컨트롤러) class Main extends MY_PageController { public function __construct() { parent::getInstance(); } function index() { $this->load->controller('_inc/header'); $this->header->index(); $this->set_contents(); $this->load->controller('_inc/footer'); $this->footer->index(); } function set_contents(){ $data['bank_result'] = $this->db->get('pb_user_bank_account')->result_array(); $this->template_->define('main', 'main_view.php'); $this->template_->assign('data', $data); $this->template_->print_('main'); } }이렇게 해봤습니다 My 관련된 클래스들은 application/libraries 에 넣어뒀구요 template_ 와 my_pagecontroller는 autoload 해뒀습니다 |
변종원(웅파)
/
2009/08/26 19:31:52 /
추천
0
현재 개발중인 CMS에서는 widget 플러그인(컨트롤러에서 다른 컨트롤러 호출)을 이용해서
각각의 플러그인들을 호출하여 만들어진 html을 조합해서 사이트를 표현해줍니다. 현재 구현하신 것도 페이지(메소드)마다 상하단을 선언해줘야 하는 구조입니다. 시간 되실때 _remap으로 바꿔보시기 바랍니다. 그러면 한번만 선언해놓으면 나머지 메소드에서는 선언할 필요없습니다. |
터프키드
/
2009/08/26 23:17:02 /
추천
0
웅파 // 넵 정말 감사합니다^^
근데 remap 은 한번 선언해놓으면 나머지 메소드에서 선언할 필요가 없다고 하셨는데요 만약 header, sidebar, footer 등이 필요없는 팝업창 같은 경우에는 어떻게 제외해줄 수 있나요? 제가 한 방법은 좀 귀찮긴 하지만, 제가 아직 수준이 낮아서 ㅎㅎ; 저런방법밖에 생각이 나지 않네요 그리고 remap을 넣을 파일이 컨트롤러 파일이라고 하셨는데요.. system/libraries/Controller.php 파일을 말씀하시는건가요? 그럼 $this->load->view('admin/header_v', $this->data) 하게되면 모든 자식 컨트롤러에서 사용되는데 admin 부분을 대체할수 있는 변수가 있는지.. (admin 일수도 service 일수도.. 여러가지 디렉토리가 있어서요..) segment(1)."/header_v" 하면 되려나요 ㅎㅎ; 아 정말 어렵고도 먼 CI와 MVC 패턴이군요..ㅠㅠ |
ci세상
/
2009/08/27 00:22:07 /
추천
0
_remap 재매핑을 이용하면 메쏘드를 체크해서 있으면 상하단 적용 없으면 팝업처리
## 컨트롤러 예제 ## <? function _remap($method) { // 메쏘드가 있으면 상하단 적용 없으면 팝업창 if ( method_exists($this,$method.'_method')) { $this->load->view(''.$this->uri->segment(1).'/header_v'); $this->{"{$method}_method"}(); $this->load->view(''.$this->uri->segment(1).'/footer_v'); } else { if(!$this->uri->segment(3)) { $this->_CreatePopup(); } else { $this->_CreateExe(); } } } function list_method() { echo "목록"; } function _CreatePopup() { echo "팝업창 띄우기"; } function _CreateExe() { echo "팝업창 실행"; }사용예) http://domain.com/member/list 라고 하면 => view폴더에 member 폴더에 header, footer가 열리고 list 메쏘드를 사용 http://domain.com/member/id_search 라고 하면 => _CreatePopup 메쏘드가 실행되면서 지정된 새창이 열리게 될것이구요 http://domain.com/member/id_search/exe 라고 하면 => _CreateExe 메쏘드가 실행되면서 팝업창을 처리완료후 닫게 만들게 됩니다. |
케이든
/
2009/08/27 00:50:25 /
추천
0
만약 header와 footer가 페이지마다 정말! 많이! 다이나믹 하다면
컨트롤러에서 컨트롤러를 부르는 hmvc나 좀더 나아가서는 모듈 방식으로 개발하면 관리하기가 좀 더 수월할겁니다.. |
터프키드
/
2009/08/27 08:51:51 /
추천
0
ci세상 // 자세한 설명 감사드립니다^^ Controller.php 에 넣는게 아니군요!
관련부분에 대해서 좀 더 찾아보고 실 개발 전에 선택해야겠습니다^^ 케이든 // 그다지 완전 심하게 다이나믹하진 않지만, 레이아웃 자체가 달라지는 경우도 많고 그렇네요..ㅠㅠ |
변종원(웅파)
/
2009/08/27 09:55:00 /
추천
0
ci세상님이 자세하게 올려주셨네요. ^^
|
그냥 index.php 최상단 파일에다가 header, footer 에 관련된 php 코드 다 짜놓고 해도 될지
helper에 header_helper.php , footer_helper.php 등록하고 해야할지
도데체 함수, 클래스 외에 디폴트로 사용해야하는 코드는 어디에 넣어야하나요..ㅠㅠ