게시판내 검색기능 업그레이드!! > 그누3 팁자료실

그누3 팁자료실

게시판내 검색기능 업그레이드!! 정보

일반 게시판내 검색기능 업그레이드!!

첨부파일

kimzz_layer.js (1.0K) 30회 다운로드 2004-02-18 22:21:52
gblist.skin.php (8.8K) 31회 다운로드 2004-02-18 22:21:52

본문

root님의 게시물 전체검색 기능(http://sir.co.kr/index.php?doc=bbs/gnuboard.php&bo_table=tiptech&page=1&wr_id=1953)에 추가해서 게시판을 보다 깔끔하게 하기 위한 방법입니다. 간단한 검색과 상세한 검색을 구분짓게 할 수 있는 팁입니다.

1) 먼저 다음 내용을 스킨내에 추가하거나 스크립트 파일로 저장합니다.
<script language="javascript">
<!--
var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;
function hidelayer(lay) {
if (ie4) {document.all[lay].style.visibility = "hidden";}
if (ns4) {document.layers[lay].visibility = "hide";}
if (ns6) {document.getElementById([lay]).style.display = "none";}
}
function showlayer(lay) {
if (ie4) {document.all[lay].style.visibility = "visible";}
if (ns4) {document.layers[lay].visibility = "show";}
if (ns6) {document.getElementById([lay]).style.display = "block";}
}
function writetolayer(lay,txt) {
if (ie4) {
document.all[lay].innerHTML = txt;
}
if (ns4) {
document[lay].document.write(txt);
document[lay].document.close();
}
if (ns6) {
over = document.getElementById([lay]);
range = document.createRange();
range.setStartBefore(over);
domfrag = range.createContextualFragment(txt);
while (over.hasChildNodes()) {
over.removeChild(over.lastChild);
}
over.appendChild(domfrag);
  }
}
// -->
</script>


2) 그리고 gblist.skin.php 상단부에 다음처럼 보여질 내용을 미리 정의합니다.
<script language=javascript>
$simple_search = "<input type=hidden name=doc value='<?=$doc?>'>"
  + "<input type=hidden name=bo_table value='<?=$bo_table?>'>"
  + "<input type=hidden name=sselect value='wr_subject|wr_content|wr_name|wr_num|wr_datetime'>"
  + "<input type=text name=stext size=10 required itemname='검색어' value='<?=$stext?>'>"
  + "<input type=hidden name=soperator value='0'>"
  + "<input type=image src='<?=$board_skin?>/search.gif' border=0 alt='검색' align=absmiddle>"
  + "&nbsp;<a href=javascript:writetolayer('search',$detailed_search);>상세검색</a>";
$detailed_search = "<input type=hidden name=doc value='<?=$doc?>'>"
  + "<input type=hidden name=bo_table value='<?=$bo_table?>'>"
  + "<select name=sselect class=select>"
  + "<option value='wr_subject|wr_content|wr_name|wr_num|wr_datetime'>전체</option>"
  + "<option value='wr_subject|wr_content'>제목+내용</option>"
  + "<option value='wr_name'>이름</option>"
  + "<option value='wr_num'>번호</option>"
  + "<option value='wr_datetime'>날짜</option>"
  + "<option value='wr_subject'>제목</option>"
  + "<option value='wr_content'>내용</option>"
  + "<option value='wr_hit'>읽음</option>"
  <? if ($is_good) { ?> + "<option value='wr_good'>추천</option>"<? } ?>
  <? if ($is_nogood) { ?> + "<option value='wr_nogood'>비추천</option>"<? } ?>
  + "</select>"
  + "<input type=text name=stext size=10 required itemname='검색어' value='<?=$stext?>'>"
  + "<select name=soperator class=select>"
  + "<option value='0'>OR</option>"
  + "<option value='1'>AND</option>"
  + "</select>"
  + "<input type=image src='<?=$board_skin?>/search.gif' border=0 alt='검색' align=absmiddle>"
  + "&nbsp;<a href=javascript:writetolayer('search',$simple_search);>간단검색</a>";
</script>

3) 다음엔 gblist.skin.php에서 검색폼이 들어갈 부분을 다음처럼 바꿔줍니다. <form>문에서 </form> 까지
<form name=fsearch method=get action='<?="./$cfg[index]"?>'>
<td width=50% align=right valign=bottom>
  <span ID="search" style="position:relative;">>&nbsp;</span>
</td>
</form>

4) 이 아래 적당한 곳에 다음처럼 미리 정의해둔 검색폼을 불러옵니다.
<script language="JavaScript">
writetolayer('search',$simple_search);
</script>

이것으로 간단검색/상세검색을 나누어 할 수 있는 스킨이 됩니다. 이미지로 한다면 더 이쁘겠지요?
첨부한 파일은 basic 스킨에 이 내용을 적용한 것입니다.
추천
1
  • 복사

댓글 전체

우~ 좋은 팁이군요...
.
..

. 그런데 상세 검색에서 이름을 검색하면 본문내용의 이름까지 검색되어지는데 좋은 기능이긴 한데
리스트의 이름만 검색, 그리고 내용도 포함 혹은 코멘트 포함등 이러한 팁도 좋을 듯한데....
그누보드 소스자체를 고쳐야 할 듯하군요.

제로보드의 검색기능처럼 각각의 카테고리 내에서도 검색이 되게 하는 것도 좋을하더군요....
카테고리 속의 내의 내용까지 검색....이것도 필요할 듯하죠...
© SIRSOFT
현재 페이지 제일 처음으로