기본으로 제공되는 카테고리1과 카테고리2 외에 카테고리3을 추가하고 싶습니다.
과거 질문들을 찾아보았지만 해결 할 수가 없네요.
혹시 구매하는 스킨중에서 카테고리3을 추가할 수 있는지요?
아니면 직접 수정할 수 는 없을까요?
2013년에 답변을 참고해서 KBContentList.class.php에
if($this->col_category1) $where[] = "`category1` LIKE '$this->col_category1'";
if($this->col_category2) $where[] = "`category2` LIKE '$this->col_category2'";
아래에 if($this->col_category3) $where[] = "`category3` LIKE '$this->col_category3'"; 를 추가해도
게시판관리 페이지에서는 카테고리1과 카테고리2만 보입니다.
해결방법을 꼭 부탁드립니다.
page폴더에 kboard_setting.php에도 카테고리3을 추가해 보았습니다.
<tr valign="top">
<th scope="row"><label for="category1_list">카테고리1</label></th>
<td>
<input type="text" style="width: 350px;" name="category1_list" id="category1_list" value="<?php echo $board->category1_list?>">
<p class="description">카테고리를 입력하세요. 여러 카테고리를 입력하실 경우 콤마(,)로 구분됩니다.</p>
</td>
</tr>
<tr valign="top">
<th scope="row"><label for="category2_list">카테고리2</label></th>
<td>
<input type="text" style="width: 350px;" name="category2_list" id="category2_list" value="<?php echo $board->category2_list?>">
<p class="description">카테고리를 입력하세요. 여러 카테고리를 입력하실 경우 콤마(,)로 구분됩니다.</p>
</td>
</tr>
<tr valign="top">
<th scope="row"><label for="category3_list">카테고리3</label></th>
<td>
<input type="text" style="width: 350px;" name="category3_list" id="category3_list" value="<?php echo $board->category3_list?>">
<p class="description">카테고리를 입력하세요. 여러 카테고리를 입력하실 경우 콤마(,)로 구분됩니다.</p>
</td>
</tr>
이렇게 했더니 게시판관리 페이지에서는 카테고리3을 입력 할 수 있게 보이지만, 변경저장을 누르면 카테고리3번만 입력한 내용이 사라집니다.
어디에서 답을 찾아야 할까요? ......
skin폴더에 list.php에도 추가해보았지만 아직 해결이 안되네요....
<div id="kboard-default-list">
<!-- 검색폼 시작 -->
<div class="kboard-header">
<form id="kboard-search-form" method="get" action="<?php echo $url->set('mod', 'list')->toString()?>">
<?php echo $url->set('category1', '')->set('category2', '')->set('category3', '')->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
<?php if($board->use_category == 'yes'):?>
<div class="kboard-category">
<?php if($board->initCategory1()):?>
<select name="category1" onchange="jQuery('#kboard-search-form').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if($_GET['category1'] == $board->currentCategory()):?> selected="selected"<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
<?php if($board->initCategory2()):?>
<select name="category2" onchange="jQuery('#kboard-search-form').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if($_GET['category2'] == $board->currentCategory()):?> selected="selected"<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
<?php if($board->initCategory3()):?>
<select name="category3" onchange="jQuery('#kboard-search-form').submit();">
<option value=""><?php echo __('All', 'kboard')?></option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>"<?php if($_GET['category3'] == $board->currentCategory()):?> selected="selected"<?php endif?>><?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
<?php endif?>
</div>
<?php endif?>
class폴더와 page폴더 및 skin폴더내의 php파일들을 모두 열어 category부분에 모두 추가해주었지만 여전히 안되네요.
kboard.class.php파일중에 아래부분을 수정해 주어야 할것 같은데(잘은 모르지만 이부분이 걸리네요) 어떻게 해야할지 모르겠습니다....
/**
* 카테고리 정보를 초기화 한다.
*/
public function initCategory1(){
$this->category = explode(',', $this->category1_list);
return $this->category1_list;
}
/**
* 두번째 카테코리 정보를 초기화 한다.
*/
public function initCategory2(){
$this->category = explode(',', $this->category2_list);
return $this->category2_list;
}
/**
* 세번째 카테코리 정보를 초기화 한다.
*/
public function initCategory3(){
$this->category = explode(',', $this->category3_list);
return $this->category3_list;
}
/**
* 다음 카테고리 정보를 반환한다.
* @return object
*/
public function hasNextCategory(){
if(!$this->category) $this->initCategory1();
$this->category_row = current($this->category);
if(!$this->category_row) unset($this->category);
else next($this->category);
return $this->category_row;
}
/**
* 카테고리 정보를 반환한다.
*/
public function currentCategory(){
return $this->category_row;
}
/**
category3은 없습니다.
그렇기 때문에 데이터베이스 테이블을 수정하고 프로그램 코드도 추가해주셔야 합니다.
게시글 정보가 저장되는 데이터베이스의 kboard_board_content 테이블에도 category1, category2만 있기 때문에 코드를 추가해도 동작하지 않습니다.
kboard_board_content 테이블에 category3을 추가 하시고
kboard_insert_data, kboard_update_data 필터를 사용해서 category3 값을 추가해주세요.
http://www.cosmosfarm.com/products/kboard/hooks
도움이 될 지 모르겠지만 입력필드 추가하는 방법도 참고해주세요.
답변 감사합니다.
그런데요... 잘 모르겠습니다.
kboard_board_content 테이블에 category3을 추가 - 데이터베이스 테이블을 수정하려면 어떻게 해야할지...
kboard_insert_data, kboard_update_data 필터를 사용해서 category3 값을 추가 - 어디에 어떻게 추가하는지요?
죄송하지만... 방법을 좀 더 자세하게 알려 주시면 감사하겠습니다.