현재 검색기능에 오류가 있어 문의드립니다.
우리는 게시판 항목을 일부 추가하고 수정했습니다. (lecturer 강의자, tag_keyword 태그키워드, reg_date 행사연도 등)
게시판 페이지에서 최초로 검색한 후 URL 주소는 다음과 같습니다.
조건1 : 전체검색, 키워드 Vacular
https://example.com/?mod=list
&pageid=1
&target=
&mod=list
&pageid=1
&keyword=Vascular
&kboard_search_option%5Blecturer%5D%5Bvalue%5D=
&kboard_search_option%5Btag_keyword%5D%5Bvalue%5D=
&kboard_search_option%5Breg_date%5D%5Bvalue%5D=
최초 검색이후 다시 검색을 하면 URL이 다음과 같이 변경됩니다.
조건2 : 전체검색, 키워드 : 이한석
https://example.com/?mod=list
&pageid=1
&keyword=Vascular
&target=
&mod=list
&pageid=1
&keyword=Vascular
&keyword=%EC%9D%B4%ED%98%95%EC%84%9D
&kboard_search_option%5Blecturer%5D%5Bvalue%5D=
&kboard_search_option%5Btag_keyword%5D%5Bvalue%5D=
&kboard_search_option%5Breg_date%5D%5Bvalue%5D=
키워드 항목이 중복되어 URL에 등록되어 있습니다.
이후에 조건을 변경하여 검색하면
위처럼 URL에 동일한 파라미터가 중복되는 이슈로 검색결과가 제대로 노출되지 않는것으로 보입니다.
조건3 : 강의자명(lecturer 추가한필드), 키워드 : 이한석
결과 > 선택한 조건은 강의자명(lecturer) 그대로, 키워드에 이한석 사라짐. 검색결과 : 없음
URL에 keyword 3개 중복됨.
아래는 적용된 skin 의 list.php 파일의 일부입니다.
<div id="kboard-play-video-list"<?php if (kboard_play_video_list($board)): ?> class="<?php echo kboard_play_video_list($board) ?>"<?php endif ?>>
<!-- Category Select Box 선택용 Form -->
<form method="get" action="<?php echo $url->toString() ?>">
<?php echo $url->set('pageid', '1')->set('mod', 'list')->toInput() ?>
<div class="kboard-search">
<select name="target">
<option value=""><?php echo __('All', 'kboard') ?></option>
<option value="title" <?php if (kboard_target() == 'title'): ?> selected="selected"<?php endif ?>><?php echo '강의명'//__('Title', 'kboard')?></option>
<option value="lecturer" <?php if (kboard_target() == 'lecturer'): ?> selected="selected"<?php endif ?>>
강의자명
</option>
<option value="reg_date" <?php if (kboard_target() == 'reg_date'): ?> selected="selected"<?php endif ?>>
연도
</option>
<option value="tag_keyword" <?php if (kboard_target() == 'tag_keyword'): ?> selected="selected"<?php endif ?>>
키워드
</option>
<?php /* ?>
<option value="content"<?php if(kboard_target() == 'content'):?> selected="selected"<?php endif?>><?php echo __('Content', 'kboard')?></option>
<option value="member_display"<?php if(kboard_target() == 'member_display'):?> selected="selected"<?php endif?>><?php echo __('Author', 'kboard')?></option>
<?php */ ?>
</select>
<?php echo $url->set('pageid', '1')->set('mod', 'list')->toInput() ?>
<!-- 카테고리1 셀렉트 박스 시작 -->
<?php /* if ($board->initCategory1()): ?>
<select name="category1" onchange="category1_change(this);" style="display:none;">
<option value=""><?php echo 'EVENT ' . __('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; */ ?>
<!-- 카테고리1 셀렉트 박스 끝 -->
<!-- 카테고리2 셀렉트 박스 시작 -->
<?php /* if ($board->initCategory2()): ?>
<select name="category2" onchange="category2_change(this);" style="display:none;>
<option value=""><?php echo 'TOPIC ' . __('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; */ ?>
<!-- 카테고리2 셀렉트 박스 끝 -->
<!-- 옵션 필드 검색 데이터를 초기화 -->
<?php $kboard_search_option = kboard_search_option() ?>
<!-- 검색폼 시작 -->
<input type="text" name="keyword" value="<?php echo kboard_keyword() ?>"
placeholder="<?php echo __('Search', 'kboard') ?>" autocomplete="off">
<input type="text" id="search_by_lecturer" name="kboard_search_option[lecturer][value]"
value="<?php echo isset($kboard_search_option['lecturer']['value']) ? $kboard_search_option['lecturer']['value'] : '' ?>"
placeholder="강의자 검색" style="display:none;" autocomplete="off">
<input type="text" id="search_by_tag_keyword" name="kboard_search_option[tag_keyword][value]"
value="<?php echo isset($kboard_search_option['tag_keyword']['value']) ? $kboard_search_option['tag_keyword']['value'] : '' ?>"
placeholder="키워드 검색" style="display:none;" autocomplete="off">
<input type="text" id="search_by_reg_date" name="kboard_search_option[reg_date][value]"
value="<?php echo isset($kboard_search_option['reg_date']['value']) ? $kboard_search_option['reg_date']['value'] : '' ?>"
placeholder="연도 검색" style="display:none;" autocomplete="off">
<!-- 검색폼 끝 -->
<input type="hidden" name="kboard_search_option[lecturer][key]" value="lecturer">
<input type="hidden" name="kboard_search_option[lecturer][compare]" value="LIKE">
<input type="hidden" name="kboard_search_option[lecturer][wildcard]" value="both">
<input type="hidden" name="kboard_search_option[tag_keyword][key]" value="tag_keyword">
<input type="hidden" name="kboard_search_option[tag_keyword][compare]" value="LIKE">
<input type="hidden" name="kboard_search_option[tag_keyword][wildcard]" value="both">
<input type="hidden" name="kboard_search_option[reg_date][key]" value="reg_date">
<button type="submit" class="kboard-play-video-button-small"><?php echo __('Search', 'kboard') ?></button>
<div class="search_guide_text1">
<p>영상 분류방법 1) 강의명, 강의자, 연도, 키워드<sup>*</sup> 별 검색이 가능합니다.</p>
<p><sup>*</sup>키워드 : 각 영상마다 강의 내용을 대표하는 키워드</p>
</div>
</div>
</form>
<script type="text/javascript">
jQuery(document).ready(function () {
var selected_search_option = jQuery(".kboard-search select").val();
if (selected_search_option == 'lecturer') {
search_lecturer_select();
} else if (selected_search_option == 'tag_keyword') {
search_tag_keyword_select();
} else if (selected_search_option == 'reg_date') {
search_reg_date_select();
} else {
search_keyword_select();
}
jQuery(".kboard-search select").change(function () {
var selected_search_option = jQuery(this).val();
if (selected_search_option == 'lecturer') {
search_lecturer_select();
} else if (selected_search_option == 'tag_keyword') {
search_tag_keyword_select();
} else if (selected_search_option == 'reg_date') {
search_reg_date_select();
} else {
search_keyword_select();
}
});
});
function search_keyword_select() {
jQuery("input[name=keyword]").show();
jQuery("#search_by_lecturer").hide().val('');
jQuery("#search_by_tag_keyword").hide().val('');
jQuery("#search_by_reg_date").hide().val('');
}
function search_lecturer_select() {
jQuery("input[name=keyword]").hide().val('');
jQuery("#search_by_lecturer").show();
jQuery("#search_by_tag_keyword").hide().val('');
jQuery("#search_by_reg_date").hide().val('');
}
function search_tag_keyword_select() {
jQuery("input[name=keyword]").hide().val('');
jQuery("#search_by_lecturer").hide().val('');
jQuery("#search_by_tag_keyword").show();
jQuery("#search_by_reg_date").hide().val('');
}
function search_reg_date_select() {
jQuery("input[name=keyword]").hide().val('');
jQuery("#search_by_lecturer").hide().val('');
jQuery("#search_by_tag_keyword").hide().val('');
jQuery("#search_by_reg_date").show();
}
function category1_change(element) {
var selected_category1 = jQuery(element).val();
if (!jQuery("#kboard-search-form input[name=category1]").length) {
jQuery("#kboard-search-form").append("<input type='hidden' name='category1' value=''>");
}
jQuery("#kboard-search-form input[name=category1]").val(selected_category1);
jQuery('#kboard-search-form').submit();
}
function category2_change(element) {
var selected_category2 = jQuery(element).val();
if (!jQuery("#kboard-search-form input[name=category2]").length) {
jQuery("#kboard-search-form").append("<input type='hidden' name='category2' value=''>");
}
jQuery("#kboard-search-form input[name=category2]").val(selected_category2);
jQuery('#kboard-search-form').submit();
}
</script>
<div class="search_guide_text2">
<p>영상 분류방법 2) EVENT, TOPIC 별 버튼을 누르시면 해당하는 영상을 보실 수 있습니다.</p>
</div>
<!-- 카테고리 시작 -->
추가적으로 전체검색에서
추가한 확장필드를 포함하여 검색할 수 있는 방법이 있나요?
안녕하세요~^^
올려주신 코드로 짐작해봤을 땐
검색 입력 필드가 4개인데 검색 결과는 각 조건과 키워드별로 결과가 나오시길 원하시는 건가요?
원하시는 입력 형태와 결과를 자세히 올려주시면 보다 정확한 원인을 파악할 수 있을 듯 합니다.
비회원으로 확인할 수 있는 링크도 남겨주시면 파악하는데 도움이 됩니다.
고맙습니다.
1. "전체" 를 조건으로 검색했을때 확장필드까지 포함해서 검색이 되기를 원합니다.
현재 검색조건 목록은 "전체", "강의자명(Lecturer - 추가필드)", "강의명 (title - 기존의 필드)", "연도 (reg_date - 추가필드)", "키워드(tag_keyword - 추가필드)"
2. (해결)검색할 때 "강의자명"으로 검색한 후 "강의명" 으로 추가검색하면 조건이나 키워드가 초기화 되거나 이전의 조건이 선택된채로 결과가 나오는 문제는 자체적으로 작성했던 스크립트의 문제로 해결하였습니다.
3. 테스트사이트는 ksnlive.ancle.kr/vod-library 입니다.