[ codeigniter ] ciboard에서 admin의 폴더처럼 다른 파일들도 정리해서 사용하고 싶다면 > Codeigniter

본문 바로가기

사이트 내 전체검색

Codeigniter

팁자료 [ codeigniter ] ciboard에서 admin의 폴더처럼 다른 파일들도 정리해서 사용하고 싶다면

작성일 21-11-05 17:06

페이지 정보

작성자 웹지기 조회 3,662회 댓글 0건

본문

Admin 의 구조(Lite, pro 모두 동일)를 파악해서 /admin 과 같은 방식으로  

콘트롤러와 views를 구성하는 방식을 설명 


- application > controllers > admin :: admin 폴더가 관리자의 기본폴더 

- 응용 ::::: application > controllers > mes :: mes 폴더로 사용이 가능한 폴더 


- views > admin > ADMIN_SKIN admin/ADMIN_SKIN 폴더가 관리자의 기본폴더 

- 응용 ::::: views/mes/MES_SKIN :: mes 폴더로 사용이 가능한 폴더  


ciboard에서 admin의 폴더처럼 다른 파일들도 정리해서 사용하고 싶다면 

다음과 같은 방법으로 변경을 해서 사용해야 한다. 


1) application/config/config.php 

 원하는 설정을 정의(기본경로로 사용될 디렉토리명)  

 $config['uri_segment_mes'] = 'mes'; //18줄에 추 


2) application/config/constants.php 

 mes로 사용할 스킨 디렉토리 정의 

 defined('ADMIN_SKIN') OR define('ADMIN_SKIN', 'basic'); 와 비슷한 방법으로 정의 

 defined('MES_SKIN') OR define('MES_SKIN', 'basic'); //100줄에 원하는 설정을 추가(기본경로로 사용될 디렉토리명)  


3) application/libaries/Managelayout.php 

 function admin( 부분을 복사해서 붙어 새로운 레이아웃으로 사용할 함수 생성) 

 복사한 함수를 => function mes( 새로 레이아웃 함수로 함수명 변경) 

 함수내 admin으로 되어 있는 부분을 mes로 변경 

 if (!preg_match('/^adm_menu_([0-9]{3}).*\.php$/', $entry, $m)) //117줄 

 => if (!preg_match('/^mes_menu_([0-9]{3}).*\.php$/', $entry, $m)) 


 $data['admin_page_menu'] = array(); //126줄 

 => $data['mes_page_menu'] = array(); 


 $res = config_item('admin_page_menu'); //129줄 

 => $res = config_item('mes_page_menu'); 


 $data['admin_page_menu'] += config_item('admin_page_menu'); //130줄 

 => $data['mes_page_menu'] += config_item('mes_page_menu'); 


 if (uri_string() !== config_item('uri_segment_admin')) { //134~136줄 

    list($data['menu_dir1'], $data['menu_dir2']) = explode('/', str_replace(config_item('uri_segment_admin') . '/', '', uri_string())); 

    $data['menu_title'] = element(0, element(element('menu_dir2', $data), element('menu', element(element('menu_dir1', $data), element('admin_page_menu', $data))))); 

 => if (uri_string() !== config_item('uri_segment_mes')) { 

    list($data['menu_dir1'], $data['menu_dir2']) = explode('/', str_replace(config_item('uri_segment_mes') . '/', '', uri_string())); 

    $data['menu_title'] = element(0, element(element('menu_dir2', $data), element('menu', element(element('menu_dir1', $data), element('mes_page_menu', $data))))); 


 $data['layout_skin_path'] = config_item('uri_segment_admin') . '/' . ADMIN_SKIN; //145줄 

 => $data['layout_skin_path'] = config_item('uri_segment_mes') . '/' . MES_SKIN; 


 $data['index_url'] = admin_url($data['menu_dir1'] . '/' . $data['menu_dir2']); //147줄 

 => $data['index_url'] = mes_url($data['menu_dir1'] . '/' . $data['menu_dir2']); 


4) application/config/admin_menu_000.php 파일을 본인이 원하는 파일로 변경 

 admin_menu_000.php ==> mes_menu_000.php 와 같은 식임.  

 파일에 들어가서 $config['admin_page_menu']['config'] 로 정의된 부분을  

 $config['mes_page_menu']['config'] 와 같은 형태로 실제 사용할 명으로 변경  


5) application/helpers/CB_url_helper.php 

 admin_url 함수를 복사해서 붙여넣기를 하고  

 /** 

 * Admin 페이지 주소를 return 합니다 

 */ 

 if ( ! function_exists('admin_url')) { 

    function admin_url($url = ''){ 

        $url = trim($url, '/'); 

        return site_url(config_item('uri_segment_admin') . '/' . $url); 

    } 

 } 


 mes_url로 바꿔준다.  

 /** 

 * mes 페이지 주소를 return 합니다 

 */ 

 if ( ! function_exists('mes_url')) { 

    function mes_url($url = ''){ 

        $url = trim($url, '/'); 

        return site_url(config_item('uri_segment_mes') . '/' . $url); 

    } 

 } 


6) application/controllers/mes 폴더 생성 및 파일생성 

 Application/controllers/mes/ 하위에 원하는 controller파일을 생성 

 예) Main.php => mes의 메인 

 예) config/Cbconfigs.php => 기본환경설정파일 

 이런식으로 Main은 mes접속시 보여질 파일이 됨 

 config/Cbconfigs.php 는 기존 admin의 기본설정파일을 복사해서 예제로 사용해 봄 

 이런식으로 파일을 복사하고 Cbconfigs.php 파일내의 경로를 모두 mes에 맞게 수정해줘야 한다. 

 이때 주의할점은 수정해야 할 함수와 수정하지 말아야 할 함수를 잘 찾아서 수정해줘야 한다. 

 URL 정의 부분 admin_url => mes_url 

 Layout 정의 부분  

 $view['layout'] = $this->managelayout->admin($layoutconfig, $this->cbconfig->get_device_view_type());  

 => $view['layout'] = $this->managelayout->mes($layoutconfig, $this->cbconfig->get_device_view_type()); 


 echo $this->load->view('admin/' . ADMIN_SKIN . '/' . $this->pagedir . '/day_excel', $view, true); 

 => echo $this->load->view(config_item('uri_segment_mes').'/' . MES_SKIN . '/' . $this->pagedir . '/day_excel', $view, true); 


 변경하지 말아야 할 함수 

 $per_page = admin_listnum(); //목록수 불러오는 함수 

 ->get_admin_list( //목록내용 불러오는 함수 


 $data['index_url'] = admin_url($data['menu_dir1'] . '/' . $data['menu_dir2']);  

 부분에서 admin을 mes로 변경  

 $data['index_url'] = mes_url($data['menu_dir1'] . '/' . $data['menu_dir2']);  


7) view/폴더에 mes/basic 폴더를 생성 

 layout.php, layout_popup.php, main.php 등의 파일을 만든다.  

 layout.php, layout_popup.php 파일에 다음을 추가 해준다.  

 layout의 경로를 mes로 수정 admin_url() => mes_url()  

 javascript에서는 mes_url 추가   

 var cb_admin_url = "<?php echo admin_url(); ?>";  

 var cb_mes_url = "<?php echo mes_url(); ?>";  

 var cb_board = "<?php echo isset($view) ? element('board_key', $view) : ''; ?>";  

 var cb_board_url = <?php echo ( isset($view) && element('board_key', $view)) ? 'cb_url + "/' . config_item('uri_segment_board') . '/' . element('board_key', $view) . '"' : '""'; ?>;  

 var cb_device_type = "<?php echo $this->cbconfig->get_device_type() === 'mobile' ? 'mobile' : 'desktop' ?>";  

 var cb_csrf_hash = "<?php echo $this->security->get_csrf_hash(); ?>";  

 var cookie_prefix = "<?php echo config_item('cookie_prefix'); ?>";  


 다른 파일의 경로 

 config_item('uri_segment_mes') / MES_SKIN / board/post/index.php 

 config_item('uri_segment_mes') / MES_SKIN /config/cbconfigs/ 파일과 같은 경로를 갖게 된다. 

 

8) 관리자로 접근하면 로그인이 가능하게 수정

 uri_segment_admin => uri_segment_mes 로 변경

 

// mes 페이지

if ($CI->member->is_admin() !== 'super' && $CI->uri->segment(1) === config_item('uri_segment_mes')) {

  redirect('login?url=' . urlencode(current_full_url()));

}


if (config_item('use_lock_ip') && $CI->uri->segment(1) === config_item('uri_segment_mes') && $CI->cbconfig->item('admin_ip_whitelist')) {

  $whitelist = $CI->cbconfig->item('admin_ip_whitelist');

  $whitelist = preg_replace("/[\r|\n|\r\n]+/", ',', $whitelist);

  $whitelist = preg_replace("/\s+/", '', $whitelist);

  if (preg_match('/(<\?|<\?php|\?>)/xsm', $whitelist)) {

    $whitelist = '';

  }

  if ($whitelist) {

    $whitelist = explode(',', trim($whitelist, ','));

    $whitelist = array_unique($whitelist);

    if (is_array($whitelist)) {

      $CI->load->library('Ipfilter');

      if ( ! Ipfilter::filter($whitelist)) {

        $title = '관리자 페이지';

        $message = '현재 접속하신 아이피는 관리자 페이지 접근이 차단되었습니다';

        show_error($message, '500', $title);

        exit;

      }

    }

  }

 

}


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 20건 1 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기