스크랩 검색기능 부여하기 > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

스크랩 검색기능 부여하기 정보

스크랩 검색기능 부여하기

첨부파일

scrap_search.zip (5.7K) 21회 다운로드 2016-12-28 16:47:21

본문

이 기능은 그누보드 원본소스를 수정하는 기능으로 그누보드 패치시에 해당 파일을 업데이트 하는 경우에는 프로그램을 다시 수정하셔야 합니다.
사용법은 최고관리자로 로그인하여 http://작업자도메인/bbs/scrap.php?data=conversion 을 한번 호출하여
스크랩 테이블에 wr_subject 필드를 생성하고, 이 생성된 필드에 기존 게시물의 제목을 업데이트 한후에
기존에 사용하시던 방법과 동일한 방법으로 사용하시면 됩니다.

작업내용은 아래1~4의 내용을 참고하시고
첨부파일은 g5 5.2.4 파일을 기준으로 수정한 파일을 첨부합니다.

1. 스크랩 테이블에 wr_subject 필드 생성, 기존 데이타 update, 검색 sql 수정
    수정파일 : bbs/scrap.php
   
    1) 최고관리자로 로그인하여 http://작업자도메인/bbs/scrap.php?data=conversion 을 실행하여
      wr_subject 필드를 생성하고, 게시판 테이블에 있는 제목을 스크랩 테이블에 업데이트 처리

    //스크랩테이블에 wr_subject 필드 생성및 데이타 이전작업 by root 20161221
    //최고관리자로 로그인후 URL 호출 http://작업자도메인/bbs/scrap.php?data=conversion
    if ($is_admin == 'super' && $data == 'conversion') {
        sql_query(" ALTER TABLE `{$g5['scrap_table']}`
                            ADD `wr_subject` VARCHAR(255) NOT NULL AFTER `wr_id` ", false);
    
        $result = sql_query("select distinct bo_table from `{$g5['scrap_table']}`");
        for ($i=0; $row=sql_fetch_array($result); $i++) {
            $usql = "update `{$g5['scrap_table']}` a
                     set    a.wr_subject =
                    (select b.wr_subject from `{$g5[write_prefix]}{$row['bo_table']}` b where b.wr_id = a.wr_id)
                     where  a.bo_table = '{$row['bo_table']}'
                     and    a.wr_subject = ''";
            sql_query($usql);
        }
    }   

   
    2) 검색어로 입력받은 문자를 기준으로 검색조건 sql 생성(공백을 기준으로 복수개의 단어 입력가능)

    $sql_common = " from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' ";
    // 검색조건설정 by root 20161221
    $sop = strtolower($sop);
    if (!$sop || !($sop == 'and' || $sop == 'or')) $sop = 'and'; // 연산자 and , or
    $stx = get_search_string($stx); // 특수문자 제거
    if ($stx) {
        $stx = preg_replace('/\//', '\/', trim($stx));
        
        $sql_common .= "and (";
        // 검색어를 구분자로 나눈다. 여기서는 공백
        $s = explode(' ', strip_tags($stx));
        for ($i=0; $i<count($s); $i++) {
            if($i>0) $sql_common .= " $sop ";
            $sql_common .= " instr(`wr_subject`,'$s[$i]') ";
        }
        $sql_common .= ")";
    }
    $sql_order = " order by ms_id desc ";

   
    3) 스크랩테이블에 wr_subject가 있으므로 각 게시판의 제목 조회는 기능 주석처리

    // 게시물 제목
    /* wr_subject를 추가했으므로 테이블에서 조회하는 구문 주석처리 by root 20161221
    $tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
    $sql3 = " select wr_subject from $tmp_write_table where wr_id = '{$row['wr_id']}' ";
    $row3 = sql_fetch($sql3, FALSE);
    $subject = get_text(cut_str($row3['wr_subject'], 100));
    if (!$row3['wr_subject'])
        $row3['wr_subject'] = '[글 없음]';
    */ 

   
    4) 위3의 제목을 가져오던 것에서 스크랩 테이블의 데이타를 가져오도록 처리

    //$list[$i]['subject'] = $subject; ==> 주석처리
    $list[$i]['subject'] = get_text(cut_str($list[$i]['wr_subject'], 100)); // 스크랩 테이블에서 조회된 값을 설정

   
2. 스크랩등록시 제목 또는 사용자가 입력한 값을 저장하도록 insert문 수정
    수정파일 : bbs/scrap_popin_update.php

    //$sql = " insert into {$g5['scrap_table']} ( mb_id, bo_table, wr_id, ms_datetime ) values ( '{$member['mb_id']}', '$bo_table', '$wr_id', '".G5_TIME_YMDHIS."' ) "; ==> 기존파일 주석처리
    //스크랩에 검색기능추가를 위해서 wr_subject 추가 by root 20161221
    $sql = " insert into {$g5['scrap_table']} ( mb_id, bo_table, wr_id, wr_subject, ms_datetime ) values ( '{$member['mb_id']}', '$bo_table', '$wr_id', '$wr_subject', '".G5_TIME_YMDHIS."' ) "; //wr_subject 항목추가
    sql_query($sql);


3. 스크랩화면에 검색 버턴 추가
    수정파일 : skin/member/basic/scrap.skin.php

    <!-- 스크랩 검색기능 추가 by root 20161221 -->
    <form name="fscrap" onsubmit="return fscrap_submit(this);" method="get">
        <div class="win_btn">
            <input type="text" name="stx" value="<?php echo $text_stx ?>" id="stx" required class="frm_input required" maxlength="20">
            <input type="submit" class="btn_submit" value="검색">
            <input type="radio" value="or" <?php echo ($sop == "or") ? "checked" : ""; ?> id="sop_or" name="sop">
            <label for="sop_or">OR</label>
            <input type="radio" value="and" <?php echo ($sop == "and") ? "checked" : ""; ?> id="sop_and" name="sop">
            <label for="sop_and">AND</label>
    
            <button type="button" onclick="window.close();">창닫기</button>
        </div>
    
        <script>
        function fscrap_submit(f)
        {  
            if (f.stx.value.length < 2) {
                alert("검색어는 두글자 이상 입력하십시오.");
                f.stx.select();
                f.stx.focus();
                return false;
            }
            f.action = "";
            return true;
        }
        </script>
    </form>

   
4. 스크랩하는 화면에서 게시글 제목을 보여주는 항목추가, 사용자의 검색어는 등록하지 않고 글제목을 그대로 저장하려면, input 박스를 hidden 처리해야함
    수정파일 : skin/member/basic/scrap_popin.skin.php

    <!-- 스크랩 내용  by root 20161221 -->
    <tr>
        <th scope="row">스크랩</th>
        <td><input type="text" name="wr_subject" size="70" required class="frm_input required" maxlength="255" value="<?php echo get_text(cut_str($write['
wr_subject'], 255)) ?>"></td>
    </tr> 
추천
4

댓글 전체

전체 503
그누보드5 플러그인 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT