전체검색에 여분필드(wr_1~wr_10)가 나오게 하는 법
본문
전체검색 스킨 파일명 search.skin.php 을 사용하고 있습니다..
아래 코드에서 여분필드(wr_1~wr_10) 가 검색에 나오게 하려면 어디를 수정해야 할까요...?
-----------------------------------------------------------------------------
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<!--
<form name=fsearch method=get onsubmit="return fsearch_submit(this);" style="margin:0px;">
<table align=center width=95% cellpadding=2 cellspacing=0>
<input type="hidden" name="srows" value="<?=$srows?>">
<tr>
<td align=center>
<?=$group_select?>
<script type="text/javascript">document.getElementById("gr_id").value = "<?=$gr_id?>";</script>
<select name=sfl class=select>
<option value="wr_subject||wr_content">제목+내용</option>
<option value="wr_subject">제목</option>
<option value="wr_content">내용</option>
<option value="mb_id">회원아이디</option>
<option value="wr_name">이름</option>
</select>
<input type=text name=stx class=ed maxlength=20 required itemname="검색어" value='<?=$text_stx?>'>
<input type=submit value=" 검 색 ">
<script type="text/javascript">
document.fsearch.sfl.value = "<?=$sfl?>";
function fsearch_submit(f)
{
if (f.stx.value.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
return false;
}
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
cnt++;
}
if (cnt > 1) {
alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
f.stx.select();
f.stx.focus();
return false;
}
f.action = "";
return true;
}
</script>
</td>
</tr>
<tr>
<td align=center>
연산자
<input type="radio" name="sop" value="or" <?=($sop == "or") ? "checked" : "";?>>OR
<input type="radio" name="sop" value="and" <?=($sop == "and") ? "checked" : "";?>>AND
</td>
</tr>
</table>
</form>
<p>
-->
<?
if ($stx)
{
echo "<ul type=circle><li><h2><b>검색된 게시판 리스트</b></h2> <h3>(<b>{$board_count}</b>개의 게시판, <b>".number_format($total_count)."</b>개의 게시글, <b>".number_format($page)."/".number_format($total_page)."</b> 페이지)</h3></ul>";
if ($board_count)
{
echo "<ul><ul type=square style='line-height:130%;'>";
if ($onetable)
echo "<li><a href='?$search_query&gr_id=$gr_id'>전체게시판 검색</a>";
echo $str_board_list;
echo "</ul></ul>";
}
else
{
echo "<ul style='line-height:130%;'><li>검색된 자료가 하나도 없습니다.</ul>";
}
}
?>
<style>
.line {clear:both;margin:10px auto;border-top:1px solid #ddd;margin-bottom:20px;}
#search_alist h3 {font:bold 16px gulim;margin:0;padding:0}
#search_alist ul {list-style-type:none;margin:0;padding:0}
#search_alist li {clear:both;list-style-type:none;margin:0;padding:2px;}
#search_alist .s_subject a {font:normal 15px dotum;color:#1424c3;letter-spacing:-1px;text-decoration:underline;}
#search_alist .s_content {font:normal 12px dotum;color:#333;line-height:170%;}
#search_alist .s_content img.s_thm {border:1px solid #ccc;margin-right:8px;margin-bottom:8px;padding:0;}
#search_alist .s_name {font:normal 12px dotum;color:#009933}
#search_alist .s_date {font:normal 12px dotum;color:#aaa}
#search_alist .s_word1 {font:bold 15px dotum;color:#1424c3}
#search_alist .s_word2 {font:bold 12px dotum;color:#000}
</style>
<div id="search_alist">
<?
$k=0;
for($idx=$table_index, $k=0; $idx<count($search_table) && $k<$rows; $idx++) {
?>
<div class="line"></div>
<h3><a href='./board.php?bo_table=<?=$search_table[$idx]?>&<?=$search_query?>'><?=$bo_subject[$idx]?>(<?=count($list[$idx])?>)</a></h3>
<ul>
<?
$comment_href = "";
$data_path = $g4[path]."/data/file/".$search_table[$idx];
$thumb_data_path = $g4[path]."/data/file/$search_table[$idx]/thumb";
for($i=0; $i<count($list[$idx]) && $k<$rows; $i++, $k++){
//내용에서 html코드가 보이면 주석해제 후 사용***1
$list[$idx][$i][content]=cut_str(strip_tags($list[$idx][$i][wr_content]),300,"...");
$comment_href=$comment=$img=$file_name="";
$list[$idx][$i][subject]=str_replace("<span style='background-color:YELLOW; color:RED;'>","<span class='s_word1'>",$list[$idx][$i][subject]);
//$list[$idx][$i][content]=str_replace("<span style='background-color:YELLOW; color:RED;'>","<span class='s_word2'>",$list[$idx][$i][content]);
//내용에서 html코드가 보이면 주석해제 후 사용***2
$list[$idx][$i][content]=str_replace($stx,"<span class='s_word2'>".$stx."</span>",$list[$idx][$i][content]);
// 가변 파일
$file['file'] = get_file($search_table[$idx], $list[$idx][$i][wr_id]);
$file_name=$file[file][0][file];
$file_reading=$data_path."/".$file_name;
$simg=$thumb_data_path."/s".$file_name;
if($file_name && file_exists($file_reading) && preg_match("/\.jpg|\.gif|\.png|\.bmp|\.jpeg/",strtolower($file_name))){
if(file_exists($simg)) $img=$simg;
else $img=$file_reading;
}
if($list[$idx][$i][wr_is_comment]) {
$comment_href = "#c_".$list[$idx][$i][wr_id];
$comment="[코멘트] ";
}
?>
<li>
<p class="s_subject"><a href="<?=$list[$idx][$i][href].$comment_href?>"><?=$comment.$list[$idx][$i][subject]?></a> <a href="<?=$list[$idx][$i][href].$comment_href?>" target="_blank9eaecd">[새창]</a></p>
<p class="s_content">
<?if($img){?>
<a href="<?=$list[$idx][$i][href]?>"><img src="<?=$img?>" width="90" align="left" class="s_thm"></a>
<?}?>
<?=$list[$idx][$i][file]?><?=$list[$idx][$i][content]?></p>
<p><span class="s_date"><?=$list[$idx][$i][wr_datetime]?></span></p>
</li>
<?}?>
</ul>
<?}?>
</div>
<p style="text-align:center;"><?=$write_pages?></p>
----------------------------------------------------------------------------
답변 3
search.skin.php 통합 검색 스킨은 출력을 뿌려주는 것이 아니라 통합 검색 페이지를 바꾸는 스킨입니다
사용할때는 아래와 같이 search.php 페이지에서 사용하게 됩니다.
http://demo.sir.co.kr/gnuboard5/bbs/search.php
메인 페이지에 출력을 뿌려줄려면 아래와 같은 형태로 해주세요.
<fieldset id="hd_sch">
<legend>사이트 내 전체검색</legend>
<form name="fsearchbox" method="get" action="<?php echo G5_BBS_URL ?>/search.php" onsubmit="return fsearchbox_submit(this);">
<input type="hidden" name="sfl" value="wr_subject||wr_content||wr_1||wr_2||wr_3||wr_4||wr_5||wr_6||wr_7||wr_8||wr_9||wr_10">
<input type="hidden" name="sop" value="and">
<label for="sch_stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
<input type="text" name="stx" id="sch_stx" maxlength="20">
<input type="submit" id="sch_submit" value="검색">
</form>
<script>
function fsearchbox_submit(f)
{
if (f.stx.value.length < 2) {
alert("검색어는 두글자 이상 입력하십시오.");
f.stx.select();
f.stx.focus();
return false;
}
// 검색에 많은 부하가 걸리는 경우 이 주석을 제거하세요.
var cnt = 0;
for (var i=0; i<f.stx.value.length; i++) {
if (f.stx.value.charAt(i) == ' ')
cnt++;
}
if (cnt > 1) {
alert("빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.");
f.stx.select();
f.stx.focus();
return false;
}
return true;
}
</script>
</fieldset>
search.skin.php 파일에 추가
<select name=sfl class=select>
<option value="wr_subject||wr_content">제목+내용</option>
<option value="wr_subject">제목</option>
............
<option value="wr_1">wr_1</option>
<option value="wr_2">wr_2</option>
</select>
/bbs/search.php 파일에 추가.
case "wr_subject" :
case "wr_content" :
case 'wr_1' :
case 'wr_2' :
테마비사용시 skin > search > search.skin.php 을 수정해서
테마사용시 theme > basic > skin > search > search.skin.php 을 수정해서 아래와 같이 해주세요.
아래의 부분을 찾아서
<option value="wr_subject||wr_content">제목+내용</option>
을
<option value="wr_subject||wr_content||wr_1||wr_2||wr_3||||wr_4||wr_5||wr_6||wr_7||wr_8||wr_9||wr_10">제목+내용+여분필드</option>
로 여분필드를 추가하여 수정해주세요.
변경하지 않고 <select name=sfl class=select>와 </select>사이에 여분필드 검색 옵션 코드를 추가해주셔도 됩니다.
<option value="wr_1||wr_2||wr_3||||wr_4||wr_5||wr_6||wr_7||wr_8||wr_9||wr_10">여분필드</option>
그리고 bbs > search.php 를 수정해서 아래와 같이해주세요
아래의 부분을 찾아서
case 'wr_subject' :
case 'wr_content' :
을
case 'wr_subject' :
case 'wr_content' :
case 'wr_wr1' :
case 'wr_wr2' :
case 'wr_wr3' :
case 'wr_wr4' :
case 'wr_wr5' :
case 'wr_wr6' :
case 'wr_wr7' :
case 'wr_wr8' :
case 'wr_wr9' :
case 'wr_wr10' :
로 여분필드를 추가해서 수정하고 아래의 부분을 찾아서
$list[$idx][$i]['subject'] = $subject;
$list[$idx][$i]['content'] = $content;
을
$list[$idx][$i]['subject'] = $subject;
$list[$idx][$i]['content'] = $content;
$list[$idx][$i]['wr_1'] = $wr_1;
$list[$idx][$i]['wr_2'] = $wr_2;
$list[$idx][$i]['wr_3'] = $wr_3;
$list[$idx][$i]['wr_4'] = $wr_4;
$list[$idx][$i]['wr_5'] = $wr_5;
$list[$idx][$i]['wr_6'] = $wr_6;
$list[$idx][$i]['wr_7'] = $wr_7;
$list[$idx][$i]['wr_8'] = $wr_8;
$list[$idx][$i]['wr_9'] = $wr_9;
$list[$idx][$i]['wr_10'] = $wr_10;
로 여분필드를 추가하여 수정해주세요.