게시판 체크박스 검색

덕분에 정말 감사합니다. 많은것을 배웠습니다. ㅎㅎ

 

다름이 아니라 몇가지 질문이 있습니다.

http://come★homest.cafe24.com/?page_id=1281

별표빼시고 주소 입력하세요. 이부분에서 Rooms에 이미지가 살짝 붕떠있는데 이부분 수정하는 방법좀 가르쳐주세요.

 

그리고 카테고리별 정렬하는 기능을 사용하려고하는데

		<div class="kboard-attr-row">
			<div class="attr-name"><?php echo __('Rooms', 'kboard')?></div>
			<div class="attr-value">
				<input type="checkbox" value="1" name="kboard_option_checkbox1" id="checkbox1"<?php if($content->option->checkbox1 == '1') { ?> checked<?php } ?>> A Room</label>
				<input type="checkbox" value="2" name="kboard_option_checkbox2" id="checkbox2"<?php if($content->option->checkbox2 == '2') { ?> checked<?php } ?>> B Room</label>
				<input type="checkbox" value="3" name="kboard_option_checkbox3" id="checkbox3"<?php if($content->option->checkbox3 == '3') { ?> checked<?php } ?>> C Room</label>
				<input type="checkbox" value="4" name="kboard_option_checkbox4" id="checkbox4"<?php if($content->option->checkbox4 == '4') { ?> checked<?php } ?>> D Room</label>
			</div>
		</div>

이런식으로 에디터에 추가하고 하려는데 체크박스 4개중에 한개는 무조건 선택해야되고

체크박스의 선택 유무에 따라 list에서 카테고리를 누르면 A room 선택된 게시글만 소팅하려고합니다..

ex) list에서 있는 카테고리 소팅을 체크박스로 구현하려고합니다. 체크박스 유무에 따라 list에서 A룸 선택하면 체크박스가 A룸 선택된 모든 게시글이 보여지면됩니다..

 

감사합니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    1. Rooms 이미지는

    워드프레스 관리자 -> 외모 -> 사용자 정의하기 -> CSS 입력 필드에

    아래의 코드를 추가해보세요.

    #kboard-customer-list .kboard-list table td.kboard-list-room { line-height: normal; }

     

    2. 올려주신 editor.php 파일의 코드를 아래의 코드로 교체해보세요.

    <label> 태그에 시작하는 코드가 없었습니다.

    <div class="kboard-attr-row">
    	<div class="attr-name"><?php echo __('Rooms', 'kboard')?></div>
    	<div class="attr-value">
    		<label for="checkbox1"><input type="hidden" name="kboard_option_checkbox1" value=""><input type="checkbox" value="1" name="kboard_option_checkbox1" id="checkbox1"<?php if($content->option->checkbox1 == '1') { ?> checked<?php } ?>>A Room</label>
    		<label for="checkbox2"><input type="hidden" name="kboard_option_checkbox2" value=""><input type="checkbox" value="2" name="kboard_option_checkbox2" id="checkbox2"<?php if($content->option->checkbox2 == '2') { ?> checked<?php } ?>>B Room</label>
    		<label for="checkbox3"><input type="hidden" name="kboard_option_checkbox3" value=""><input type="checkbox" value="3" name="kboard_option_checkbox3" id="checkbox3"<?php if($content->option->checkbox3 == '3') { ?> checked<?php } ?>>C Room</label>
    		<label for="checkbox4"><input type="hidden" name="kboard_option_checkbox4" value=""><input type="checkbox" value="4" name="kboard_option_checkbox4" id="checkbox4"<?php if($content->option->checkbox4 == '4') { ?> checked<?php } ?>>D Room</label>
    	</div>
    </div>

     

    3. 체크박스 4개 중 최소 1개 이상 체크를 해야 하는 기능은

    FTP로 접속해서 /wp-content/plugins/kboard/skin/사용중인스킨/script.js 파일에서

    아래의 코드를 찾아보세요.

    if(jQuery(form).data('submitted')){
    	alert(kboard_localize_strings.please_wait);
    	return false;
    }

    찾은 코드 밑에 아래의 코드를 추가해보세요.

    if(!jQuery('#checkbox1', form).prop('checked') &&
    		!jQuery('#checkbox2', form).prop('checked') &&
    		!jQuery('#checkbox3', form).prop('checked') &&
    		!jQuery('#checkbox4', form).prop('checked')){
    	alert('최소 1개는 체크해야 합니다.');
    	jQuery('#checkbox1', form).focus();
    	return false;
    }

     

    4. /wp-content/plugins/kboard/skin/사용중인스킨/list.php 파일에

    아래의 코드를 적절한 위치에 추가해보세요.

    <div class="kboard-option">
    	<form id="kboard-option-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    		<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    		<input type="hidden" name="kboard_search_option[relation]" value="AND">
    		<?php $option = kboard_search_option();?>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox1][key]" value="checkbox1">
    			<input type="checkbox" name="kboard_search_option[checkbox1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkbox1']['value']) && $option['checkbox1']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox1][compare]" value="=">
    			A Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox2][key]" value="checkbox2">
    			<input type="checkbox" name="kboard_search_option[checkbox2][value]" value="2" onchange="this.form.submit()"<?php if(isset($option['checkbox2']['value']) && $option['checkbox2']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox2][compare]" value="=">
    			B Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox3][key]" value="checkbox3">
    			<input type="checkbox" name="kboard_search_option[checkbox3][value]" value="3" onchange="this.form.submit()"<?php if(isset($option['checkbox3']['value']) && $option['checkbox3']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox3][compare]" value="=">
    			C Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox4][key]" value="checkbox4">
    			<input type="checkbox" name="kboard_search_option[checkbox4][value]" value="4" onchange="this.form.submit()"<?php if(isset($option['checkbox4']['value']) && $option['checkbox4']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox4][compare]" value="=">
    			D Room
    		</label>
    	</form>
    </div>

    고맙습니다.

  • 아, 아래처럼 function.php에  특정 기간만 게시글이 나오도록 했는데 그 부분이 원인이네요. 동시에 적용하기는 힘든가봅니다. 

    add_filter('kboard_list_where', 'gotogether_list_where', 10, 3);
    function gotogether_list_where($where, $board_id, $content_list){
    	
    	if($board_id == '3'){ // 실제 적용될 게시판의 ID값으로 변경해주세요. 하단의 쿼리에서도 board_id를 변경해야함. 
    		$date = date('1m01000000', current_time('timestamp')); // 이번달 시작 날짜 기준 - 한달은Ym01000000 (현재는 1년)
    		
    		$where = "`date`>='{$date}' AND `board_id`='3'  AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    	}
    	
    	return $where;
    }

     

  • 안녕하세요.

    저희 쪽 테스트 서버에서는 올려주신 코드가 정상적으로 동작하는 것을 확인했습니다.

    테마 쪽 functions.php 파일에 별도로 코드를 추가하셨거나

    스킨 파일의 editor.php 파일을 수정하신 게 있으시면 알려주시겠어요?

    고맙습니다.

  • 안녕하세요.

    상단에 올려주신 코드를 이용해서 필드옵션 필터링을 잘 사용하고 있었는데 금일 확인해보니 먹히지 않는군요.

    혹시 무슨 변경된 내용이 있어서 안되는 걸까요?

    <div class="kboard-option">
    	<form id="kboard-option-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    		<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    		<input type="hidden" name="kboard_search_option[relation]" value="AND">
    		<?php $option = kboard_search_option();?>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox1][key]" value="checkbox1">
    			<input type="hidden" name="kboard_search_option[checkbox1][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkbox1']['value']) && $option['checkbox1']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox1][compare]" value="=">
    			A Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox2][key]" value="checkbox2">
    			<input type="hidden" name="kboard_search_option[checkbox2][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox2][value]" value="2" onchange="this.form.submit()"<?php if(isset($option['checkbox2']['value']) && $option['checkbox2']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox2][compare]" value="=">
    			B Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox3][key]" value="checkbox3">
    			<input type="hidden" name="kboard_search_option[checkbox3][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox3][value]" value="3" onchange="this.form.submit()"<?php if(isset($option['checkbox3']['value']) && $option['checkbox3']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox3][compare]" value="=">
    			C Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox4][key]" value="checkbox4">
    			<input type="hidden" name="kboard_search_option[checkbox4][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox4][value]" value="4" onchange="this.form.submit()"<?php if(isset($option['checkbox4']['value']) && $option['checkbox4']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox4][compare]" value="=">
    			D Room
    		</label>
    	</form>
    </div>

     

  • 안녕하세요.

    KBoard 플러그인에서 지원하는 kboard_list_where 필터를 이용해서

    게시글 목록을 가져오는 DB쿼리문의 WHERE절을 편집하실 수 있습니다.

    자세한 내용은 아래의 링크를 참고해보시겠어요?

    http://www.cosmosfarm.com/products/kboard/hooks

     

    KBoard(케이보드) 입력 필드 검색 방법도 참고해보세요.

    고맙습니다.

  • 안녕하세요.

    이렇게 해서 필터링을 하다보면 부하가 좀 걸릴 것 같은 생각이 들어서 하는 질문입니다. 

    혹시 옵션선택해서 필터링을 할 때 결과물을 가장 최근 1개월까지만 보여주는 방법도 있을까요? 

  • 잘 작동합니다. 정말 감사합니다. ^^

  • 안녕하세요.

    안내해드린 코드를 적용하신 후 체크박스를 A와 B를 체크해서 검색하시면

    게시글 작성 시 A와 B 체크박스에 체크한 게시글을 표시합니다.

    이전에 안내해드린 코드에 버그가 있을 수 있으니

    아래의 코드를 활용해보시겠어요?

    <div class="kboard-option">
    	<form id="kboard-option-form-<?php echo $board->id?>" method="get" action="<?php echo $url->toString()?>">
    		<?php echo $url->set('pageid', '1')->set('target', '')->set('keyword', '')->set('mod', 'list')->toInput()?>
    		<input type="hidden" name="kboard_search_option[relation]" value="AND">
    		<?php $option = kboard_search_option();?>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox1][key]" value="checkbox1">
    			<input type="hidden" name="kboard_search_option[checkbox1][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox1][value]" value="1" onchange="this.form.submit()"<?php if(isset($option['checkbox1']['value']) && $option['checkbox1']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox1][compare]" value="=">
    			A Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox2][key]" value="checkbox2">
    			<input type="hidden" name="kboard_search_option[checkbox2][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox2][value]" value="2" onchange="this.form.submit()"<?php if(isset($option['checkbox2']['value']) && $option['checkbox2']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox2][compare]" value="=">
    			B Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox3][key]" value="checkbox3">
    			<input type="hidden" name="kboard_search_option[checkbox3][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox3][value]" value="3" onchange="this.form.submit()"<?php if(isset($option['checkbox3']['value']) && $option['checkbox3']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox3][compare]" value="=">
    			C Room
    		</label>
    		
    		<label>
    			<input type="hidden" name="kboard_search_option[checkbox4][key]" value="checkbox4">
    			<input type="hidden" name="kboard_search_option[checkbox4][value]" value="">
    			<input type="checkbox" name="kboard_search_option[checkbox4][value]" value="4" onchange="this.form.submit()"<?php if(isset($option['checkbox4']['value']) && $option['checkbox4']['value']):?> checked<?php endif?>>
    			<input type="hidden" name="kboard_search_option[checkbox4][compare]" value="=">
    			D Room
    		</label>
    	</form>
    </div>

    고맙습니다.

  • 질문) 혹시 체크박스 복수로 선택하면 A와 B가 동시에 선택된 게시글 검색하는 것도 가능한지요?

  • 아직해보지는않았지만.. 잘될거같군요..ㅎㅎ

    정말 감사합니다. 

    그리고 유료 기술지원 메일로 신청했는데 아직 연락을 못받았습니다.

    확인부탁드려요~

  • 입력 필드 검색 시 특정 날짜의 게시글만 표시하시려면

    추가하신 코드를 수정해주셔야 할 듯합니다.

    아래의 코드를 활용해보시겠어요?

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
    	if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$date = date('Ymd000000', strtotime('-1 years'));
    		$where .= "AND `date`>='{$date}'";
    	}
    	
    	return $where;
    }

    위의 코드에서 $board_id == '1' 부분은 실제 게시판 id로 적용해주세요.

    위의 코드는 1년 전의 게시글을 표시하는 코드입니다.

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기