검색 기능의 오류

현재 검색기능에 오류가 있어 문의드립니다. 

우리는 게시판 항목을 일부 추가하고 수정했습니다. (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>
    <!-- 카테고리 시작 -->

 

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