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

본문 바로가기
사이트 내 전체검색

Codeigniter

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

페이지 정보

작성자 웹지기 댓글 0건 조회 52회 작성일 21-11-05 17:06

본문

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

댓글목록

등록된 댓글이 없습니다.

Total 17건 1 페이지
  • 12 팁자료[ codeigniter ] HTMLPurifier.standalone.php php7.4 {$i} {0} …
  • php7.4에서 $str = "test"; echo($str{0}); 이러한 코드로 사용이 가능했던 부분이 수정되어 $str="test"; echo($str[0]); 이러한 코드로 사용을 해야 오류가 발생하지 않는다. /plugin/htmnlpurifier/standalone/HTMLPurifier.standalone.php 3908 줄 $in = ord($str{$i});php7.4 대처 구문 수정 =&gt;{$i} 대신 [$i] 사용 ...
  • 웹지기 08-30 51 0 0 댓글 0
  • 10 팁자료[ CodeIgniter ] ci_export 설치 방법 설명
  • /application/config/config.php =&gt; base url 수정( 기본 설정 되어있음 ) /application/config/config.php =&gt; encryption_key ( 암호키 세션 사용시 - 기본 설정 되어 있음 ) /application/config/database.php =&gt; database 설정
  • 웹지기 07-19 25 0 0 댓글 0
  • 9 팁자료[ Codeigniter ] ciboard install/setp5 500 error [ xampp ]
  • xampp 환경에 ciboard설치시 install/step5 부분에서 자꾸 500 에러가 발생해서 확인해 보았다. php.ini 파일 설정 확인 max_execution_time=30 으로 되어있는경우 30초의 뒤에는 HTTP ERROR 500오류를 뱉어내고 종료시킨다. db의 일부와 table의 일부 컬럼은 저장이 되지만 전부가 저장되어있지 않아 홈페이지에 접속을 하게 되면 로그인도 되지 않는다 관리자의 계정정보도 저장이 되어 지지않았다. php.ini 의 max_ex...
  • 웹지기 07-18 44 0 0 댓글 0
  • 8 팁자료[ codeigniter ] php5.6 이상일 때 application/json 전송시 오류
  • php5.6 이상에서 content-type application/json로 전송시 $_POST로 데이터를 받을 수 가 없다. row데이터에서 값을 가져와서 파싱해야 하고 $HTTP_ROW_POST_DATA가 php5.6이상에서는 deprecated 되기 때문이다 $aData = var_export(file_get_contents('php://input'),TRUE); $aArr = json_decode(str_replace("'", ""...
  • 웹지기 05-07 41 0 0 댓글 0
  • 7 팁자료[ codeigniter ] 폼 전송시 데이터 짤림, input post의 전송 개수
  • codeigniter ciboard의 리스트 페이지의 경우 선택된 페이지의 값만을 넘기는게 아니라, 해당 폼의 모든 input 값을 넘겨버린다. print_r2($this-&gt;input-&gt;post()); 로 값을 확인 할 경우 input으로 되어있는 모든값들을 전송하므로 php.ini 에서 설정되어있는 max_input_vars = 1000 이라는 값 때문에 총 1000개의 input 값만을 전송하고 나머지 값은 모두 날려 버린다. 그렇다 이 값을 ...
  • 웹지기 04-26 37 1 0 댓글 1
  • 4 팁자료[ codeigniter ] ciboard 다음 주소 지번과 도로명 같이 사용하기
  • 도로명 주소와 지번을 한개만 사용가능한 부분을 두개 모두 사용하게 변경 시켜보자. 해당 폼 페이지에서 지번적을 부분을 추가해준다. &lt;input type="text" name="address5" id="address5"&gt; 버튼에도 추가해준다. &lt;button type="button" onclick="win_zip('fregisterform', 'zipcod...
  • 웹지기 03-21 23 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
7,985
어제
3,568
최대
24,117
전체
3,008,111

그누보드5
Copyright © funyphp.com. All rights reserved.