게시글 작성 시 설렉트박스 옵션 선택에 따라 게시글 타이틀 옆에 라벨이 표시되도록 했습니다.
list.php
<a href="<?php
echo $url->getDocumentURLWithUID($content->uid)
?>">
<div class="kboard-price_chart-cut-strings">
<?php if($content->isNew()):?><span class="kboard-price_chart-new-notify">New</span><?php endif?>
<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
<?php echo $content->title?>
<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
<?php if($content->option->work_state == '작업준비'):?><span class="kboard-price_chart-working">작업준비</span><?php endif?>
<?php if($content->option->work_state == '작업중'):?><span class="kboard-price_chart-working">작업중</span><?php endif?>
<?php if($content->option->work_state == '검토요청'):?><span class="kboard-price_chart-request">검토요청</span><?php endif?>
<?php if($content->option->work_state == '완료'):?><span class="kboard-price_chart-done">완료</span><?php endif?>
</div>
</a>
게시글 목록에서 추가한 4개(작업준비, 작업중, 검토요청, 완료)를 정렬 설렉트박스에 추가하여, 해당 항목만 정렬이 되게 할 수 있을까요?
<div class="kboard-sort">
<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
<option value="kboard-price_chart-working"<?php if($list->getSorting() == 'kboard-price_chart-working'):?> selected<?php endif?>>작업중</option>
</select>
</form>
</div>
정렬 필드에 이렇게 추가하니 안되기는하네요 ㅎㅎ;
혹시 정렬추가 메뉴얼은 없을까요?
번거롭게 해서 죄송합니다.
KBoard 플러그인에서 입력 필드의 옵션 키는
kboard_option_{옵션 카} 이러한 형식으로 적용해주셔야 합니다.
올려주신 코드 중 kboard-price_chart-working 부분을
kboard_option_work_state로 교체해서 확인해보시겠어요?
고맙습니다.
<div class="kboard-sort">
<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
<option value="kboard_option_work_state"<?php if($list->getSorting() == 'kboard_option_work_state'):?> selected<?php endif?>>작업중</option>
</select>
</form>
</div>
sort 부분에 말씀하신대로 아래와 같이 추가하였지만, 정렬 선택시 적용이 되지 않습니다.
방법이 없을까요?
올려주신 코드는 KBoard 플러그인에서 정렬 쪽 코드입니다.
검색 폼에 코드를 추가해보시겠어요?
검색 폼은 입력 필드를 선택하고 키워드를 입력하는 방식입니다.
고맙습니다.
별도의 셀렉트 박스를 게시글 목록 페이지에 추가하고
작업준비, 작업중, 검토요청, 완료 선택 시 게시글이 표시되게 하시려면
아래의 코드를 list.php 파일에 활용해보시겠어요?
<form id="kboard-search-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('target', 'kboard_option_work_state')->set('keyword', '')->set('mod', 'list')->toInput()?>
<select name="keyword" onchange="this.form.submit()">
<option value="">전체</option>
<option value="작업준비"<?php if(kboard_keyword() == '작업준비'):?> selected<?php endif?>>작업준비</option>
<option value="작업중"<?php if(kboard_keyword() == '작업중'):?> selected<?php endif?>>작업중</option>
<option value="검토요청"<?php if(kboard_keyword() == '검토요청'):?> selected<?php endif?>>검토요청</option>
<option value="완료"<?php if(kboard_keyword() == '완료'):?> selected<?php endif?>>완료</option>
</select>
</form>
고맙습니다.
친절한 답변에 감사합니다.^^
입력필드에서는 정상적으로 작동이 되고있습니다.
추가적으로 정렬쪽에서 컨트롤은 힘든건가요?? ㅎㅎ
정렬 쪽에서도 컨트롤 할 수 있습니다.
우선 정렬 쪽 코드를 아래의 코드로 교체해보시겠어요?
<div class="kboard-sort">
<form id="kboard-sort-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
<?php echo $url->set('pageid', '1')->set('category1', '')->set('category2', '')->set('target', '')->set('keyword', '')->set('mod', 'list')->set('kboard_list_sort_remember', $board->id)->toInput()?>
<select name="kboard_list_sort" onchange="jQuery('#kboard-sort-form-<?php echo $board->id?>').submit();">
<option value="newest"<?php if($list->getSorting() == 'newest'):?> selected<?php endif?>><?php echo __('Newest', 'kboard')?></option>
<option value="best"<?php if($list->getSorting() == 'best'):?> selected<?php endif?>><?php echo __('Best', 'kboard')?></option>
<option value="viewed"<?php if($list->getSorting() == 'viewed'):?> selected<?php endif?>><?php echo __('Viewed', 'kboard')?></option>
<option value="updated"<?php if($list->getSorting() == 'updated'):?> selected<?php endif?>><?php echo __('Updated', 'kboard')?></option>
<option value="작업준비"<?php if(isset($_GET['kboard_list_sort'])&&$_GET['kboard_list_sort'] == '작업준비'):?> selected<?php endif?>>작업준비</option>
<option value="작업중"<?php if(isset($_GET['kboard_list_sort'])&&$_GET['kboard_list_sort'] == '작업중'):?> selected<?php endif?>>작업중</option>
<option value="검토요청"<?php if(isset($_GET['kboard_list_sort'])&&$_GET['kboard_list_sort'] == '검토요청'):?> selected<?php endif?>>검토요청</option>
<option value="완료"<?php if(isset($_GET['kboard_list_sort'])&&$_GET['kboard_list_sort'] == '완료'):?> selected<?php endif?>>완료</option>
</select>
</form>
</div>
그 다음, 워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보세요.
add_filter('kboard_list_from', 'my_kboard_list_from', 10, 3);
function my_kboard_list_from($from, $board_id, $content_list){
global $wpdb;
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$from .= " LEFT JOIN `{$wpdb->prefix}kboard_board_option` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`{$wpdb->prefix}kboard_board_option`.`content_uid`";
}
return $from;
}
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
global $wpdb;
$option_key = 'work_state';
$kboard_list_sort = isset($_GET['kboard_list_sort'])?$_GET['kboard_list_sort']:'';
if(in_array($kboard_list_sort, array('작업준비','작업중','검토요청','완료')) && $board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$where .= " AND (`option_key`='{$option_key}' AND `option_value`='{$kboard_list_sort}')";
}
return $where;
}
위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해주세요.
고맙습니다.
정상적으로 잘 작동합니다.
친절한 답변 감사합니다~