검색 관련 질문.... 나라오름님의 더블카테고리, madem의 도서 게시판에서... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

검색 관련 질문.... 나라오름님의 더블카테고리, madem의 도서 게시판에서... 정보

검색 관련 질문.... 나라오름님의 더블카테고리, madem의 도서 게시판에서...

본문

나로오름님의 더블 카테고리를 적용한 madem님의 도서 게시판을 만들어서
스킨 게시판에 올렸습니다.
(부끄...)
http://sir.co.kr/bbs/tb.php/g4_skin/2050
http://sir.co.kr/bbs/tb.php/g4_skin/3876

스킨
http://sir.co.kr/bbs/tb.php/g4_skin/10123

근데...
List 화면에서 하위카테고리로 필터링이 되면 검색이 되는데...
필터링이 안된 초기 상태에서는 제목 검색이 안됩니다.

적용한 홈페이지
http://www.kukaknori.or.kr/kukak/bbs/board.php?bo_table=info_book

살펴 보시고
아시는 분의 답변을 간전히 바랍니다.

더불어
글을 수정할 때 더블카테고리 중 선택된 하위 카테고리가 불러지지 않고 초기화되서 나옵니다.
이에 대해서도 답변을...
  • 복사

댓글 전체

1. List 화면에서 하위카테고리로 필터링이 되면 검색이 되는데...필터링이 안된 초기 상태에서는 제목 검색이 안됩니다.
-->>> 원본 다운받아 올리고 테스트 결과 검색부분의 질문하신 내용 적용됩니다. 게시물 수가 적더라도 검색어로 인해 검색된 글의 제목에 검색어의 색깔이 바뀌었다면 정상적인 동작이라고 봐야하지 않을까요? 링크 남깁니다.

테스트 링크 http://connector.dasir.co.kr/bbs/bbs/board.php?bo_table=_book

2. 글을 수정할 때 더블카테고리 중 선택된 하위 카테고리가 불러지지 않고 초기화되서 나옵니다.

-->>> 하위카테고리 뿐만 아니라 연구소 보유여부도 마찬가지 길래 손을 좀 보았습니다. 아래 내용은
다운받은 원본을 수정한 것이니 참고하시기 바랍니다 .

__________ write.skin.php _______________________

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

include_once "$board_skin_path/skin.lib.php";

if ($is_category) {
    $nc_category_location  = "./board.php?bo_table=$bo_table&sca=$sca&sfl=wr_10&stx=";
    $nc_category_option    = get_nc_category_option($bo_table, $sca);
}

$wr_7 = $write[wr_7];
$wr_10 = $write[wr_10];
?>
<script id="dynamic"></script>

<script language="javascript">
// 글자수 제한
var char_min = parseInt(<?=$write_min?>); // 최소
var char_max = parseInt(<?=$write_max?>); // 최대

function category_data(sel,target) {
var sca    = sel.options[sel.selectedIndex].value; // 첫번째 selectbox의 선택된 텍스트
var form    = sel.form.name;
dynamic.src = "<?=$board_skin_path?>/category.data.php?bo_table=<?=$bo_table?>&form=" + form + "&sca=" + sca + "&target=" + target;
}
</script>

<!-- 김선용 2005.4 - ff(불여우) 에서는 innerhtml 사용시 폼이 <table> 아래에 있으면 인식하지 못합니다. -->
<form name="fwrite" method="post" action="javascript:fwrite_check(document.fwrite);" enctype="multipart/form-data" style="margin:0px;">
<input type=hidden name=null><!-- 삭제하지 마십시오. -->
<input type=hidden name=w        value="<?=$w?>">
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=wr_id    value="<?=$wr_id?>">
<input type=hidden name=sfl      value="<?=$sfl?>">
<input type=hidden name=stx      value="<?=$stx?>">
<input type=hidden name=spt      value="<?=$spt?>">
<input type=hidden name=sst      value="<?=$sst?>">
<input type=hidden name=sod      value="<?=$sod?>">
<input type=hidden name=page    value="<?=$page?>">
<table width="<?=$width?>" align=center cellpadding=0 cellspacing=0><tr><td align=center>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr height="33">
    <td width="4" bgcolor="#7BB2D6"><img src="<?=$board_skin_path?>/img/top_01.gif" width="4" height="33"></td>
    <td width="110" align="center" bgcolor="#7BB2D6">&nbsp;</td>
    <td width="5" align="center" bgcolor="#7BB2D6"><img src="<?=$board_skin_path?>/img/top_02.gif" width="5" height="33"></td>
    <td width="5" align="center" bgcolor="#EEEEEE"><img src="<?=$board_skin_path?>/img/top_03.gif" width="5" height="33"></td>
    <td width="" align="left" bgcolor="#EEEEEE"><font style="font-family:돋움; font-size:9pt; color:#7D7D7D"><strong>[ <?=$title_msg?> ]</strong></span></td>
    <td width="4" bgcolor="#EEEEEE"><img src="<?=$board_skin_path?>/img/top_04.gif" width="4" height="33"></td>
</tr>


<? if ($is_name) { ?>
<tr height="30">
    <td></td>
    <td align="center">이름</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed maxLength=20 size=15 name=wr_name itemname="이름" required value="<?=$name?>"></TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<? if ($is_password) { ?>
<tr height="30">
    <td></td>
    <td align="center">패스워드</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed type=password maxLength=20 size=15 name=wr_password itemname="패스워드" <?=$password_required?>></TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<? if ($is_email) { ?>
<tr height="30">
    <td></td>
    <td align="center">이메일</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed maxLength=100 size=50 name=wr_email email itemname="이메일" value="<?=$email?>"></TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<? if ($is_homepage) { ?>
<tr height="30">
    <td></td>
    <td align="center">홈페이지</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed size=50 name=wr_homepage itemname="홈페이지" value="<?=$homepage?>"></TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<tr height="30">
    <td></td>
    <td align="center">옵션</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'>
        <? if ($is_notice) { ?><input type=checkbox name=notice value="1" <?=$notice_checked?>>공지&nbsp;<? } ?>
        <? if ($is_html) { ?><INPUT onclick="html_auto_br(this);" type=checkbox value="<?=$html_value?>" name="html" <?=$html_checked?>><span class=w_title>HTML</span>&nbsp;<? } ?>
        <? if ($is_secret) { ?><INPUT type=checkbox value="secret" name="secret" <?=$secret_checked?>><span class=w_title>비밀글</span>&nbsp;<? } ?>
        </td>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>


<? if ($is_category) { ?>
<tr height="30">
    <td></td>
    <td align="center">분류</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'>        <select name=ca_name required itemname="분류" onChange="category_data(this,'wr_10');">
            <option value="">선택하세요<?=$category_option?>
        </select>
        <select name="wr_10">
        <?
if ($wr_10){
echo "<option selected value='$wr_10'>$wr_10</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
?>
           
        </select> </TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<tr height="30">
    <td></td>
    <td align="center">도서명</td>
    <td colspan=2></td>
    <td style='padding-left:5px; padding-right:5px;'><INPUT class=ed style="width:100%;" name=wr_subject itemname="제목" required value="<?=$subject?>"></td>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<tr>
<td></td>
<td align=center>상세정보</td>
<td colspan=2></td>
<td>
<table width=100%>
<tr>
    <td align="right" width=20%>출판사</td>
    <td  width=30% ><INPUT class=ed style="width:100%;" name=wr_1 itemname="출판사" required value="<?=$write[wr_1]?>"></td>
    <td  width=20% align="right">지은이</td>
    <td width=30%><INPUT class=ed style="width:100%;" name=wr_2 itemname="지은이" required value="<?=$write[wr_2]?>"></td>
</tr>
<tr>
    <td align="right" width=20%>페이지</td>
    <td  width=30% ><INPUT class=ed style="width:100%;" name=wr_3 itemname="페이지" required value="<?=$write[wr_3]?>"></td>
    <td  width=20% align="right">크기</td>
    <td width=30%><INPUT class=ed style="width:100%;" name=wr_4 itemname="크기" value="<?=$write[wr_4]?>"></td>
</tr>
<tr>
  <td align="right">발행일</td>
  <td ><input class=ed style="width:100%;" name=wr_5 itemname="발행일" required value="<?=$write[wr_5]?>" /></td>
  <td align="right">ISBN</td>
  <td><input class=ed style="width:100%;" name=wr_6 itemname="ISBN" value="<?=$write[wr_6]?>" /></td>
</tr>
<tr>
    <td align="right" width=20%>연구소보유여부</td>
    <td  width=30% ><select class="ed" name="wr_7" required="required" itemname='연구소보유여부' value="<?=$write[wr_7]?>">
      <?
if ($wr_7){
echo "<option selected value='$wr_7'>$wr_7</option>";
} else {
echo "<option selected value=''>선택하세요</option>";
}
?>
      <option value='연구소 비치'>연구소 비치</option>
      <option value='구입예정'>구입예정</option>
      <option value='분실'>분실</option>
      <option value='품절'>품절</option>
      <option value='구입예정 없음'>구입예정 없음</option>
      <option value='기타'>기타 </option>
    </select></td>
    <td  width=20% align="right">&nbsp;</td>
    <td width=30%>&nbsp;</td>
</tr>
</table>
</td></tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<?
$content_view = explode(",,,", $content);
$content_a = $content_view[0];
$content_b = $content_view[1];
?>

<tr>
    <td></td>
    <td align="center">목차</td>
    <td colspan=2></td>
    <td style='padding:5px;'>
        <table width=100% cellpadding=0 cellspacing=0>
        <tr>
            <td width=50% align=left valign=bottom>
                <SPAN style="CURSOR: pointer;" onclick="textarea_decrease('content_a', 10);"><img src="<?=$board_skin_path?>/img/up.gif" width="16" height="16"></SPAN>
                <SPAN style="CURSOR: pointer;" onclick="textarea_original('content_a', 10);"><img src="<?=$board_skin_path?>/img/start.gif" width="16" height="16"></SPAN>
                <SPAN style="CURSOR: pointer;" onclick="textarea_increase('content_a', 10);"><img src="<?=$board_skin_path?>/img/down.gif" width="16" height="16"></SPAN></td>
            <td width=50% align=right></td>
        </tr>
        </table>
        <TEXTAREA id=content_a name=content_a class=tx style='width:100%; word-break:break-all;' rows=10 itemname="목차" required
        <? if ($write_min || $write_max) { ?>ONKEYUP="check_byte('content_a', 'char_count');"<?}?>><?=$content_a?></TEXTAREA>
        <? if ($write_min || $write_max) { ?><script language="JavaScript"> check_byte('content_a', 'char_count'); </script><?}?></td>
    <td></td>
</tr>
<tr>
    <td></td>
    <td align="center">내용</td>
    <td colspan=2></td>
    <td style='padding:5px;'>
        <table width=100% cellpadding=0 cellspacing=0>
        <tr>
            <td width=50% align=left valign=bottom>
                <SPAN style="CURSOR: pointer;" onclick="textarea_decrease('content_b', 10);"><img src="<?=$board_skin_path?>/img/up.gif" width="16" height="16"></SPAN>
                <SPAN style="CURSOR: pointer;" onclick="textarea_original('content_b', 10);"><img src="<?=$board_skin_path?>/img/start.gif" width="16" height="16"></SPAN>
                <SPAN style="CURSOR: pointer;" onclick="textarea_increase('content_b', 10);"><img src="<?=$board_skin_path?>/img/down.gif" width="16" height="16"></SPAN></td>
            <td width=50% align=right><? if ($write_min || $write_max) { ?><span id=char_count></span>글자<?}?></td>
        </tr>
        </table>
        <TEXTAREA id=content_b name=content_b class=tx style='width:100%; word-break:break-all;' rows=10 itemname="내용" required
        <? if ($write_min || $write_max) { ?>ONKEYUP="check_byte('content_b', 'char_count');"<?}?>><?=$content_b?></TEXTAREA>
        <? if ($write_min || $write_max) { ?><script language="JavaScript"> check_byte('content_b', 'char_count'); </script><?}?></td>
    <td>
    <textarea id=wr_content name=wr_content rows=0 cols=0 style='width=0%; height=0%;'></textarea>
    <input type=hidden size=3 name=content_c value=",,,">
   
    </td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>

<? if ($is_link) { ?>

<tr height="30">
    <td></td>
    <td align="center">관련사이트</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT type='text' class=ed size=50 name='wr_link1' itemname='관련사이트' value='<?=$write["wr_link1"]?>'></td>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>

<? if ($is_file) { ?>
<tr height="30">
    <td></td>
    <td align="center" valign="top"><table cellpadding=0 cellspacing=0><tr><td style=" PADDING-TOP: 10px;">포스터 <span onclick="add_file();" style='cursor:pointer;'>+</span> <span onclick="del_file();" style='cursor:pointer;'>-</span></td></tr></table></td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><table id="variableFiles" cellpadding=0 cellspacing=0></table><?// print_r2($file); ?>
        <script language="JavaScript">
        function add_file(delete_code)
        {
            var objTbl;
            var objRow;
            var objCell;
            if (document.getElementById)
                objTbl = document.getElementById("variableFiles");
            else
                objTbl = document.all["variableFiles"];

            objRow = objTbl.insertRow(objTbl.rows.length);
            objCell = objRow.insertCell(0);

            objCell.innerHTML = "<input type='file' class=ed size=32 name='bf_file[]' title='파일 용량 <?=$upload_max_filesize?> 이하만 업로드 가능'>";
            if (delete_code)
                objCell.innerHTML += delete_code;
            else
            {
                <? if ($is_file_content) { ?>
                objCell.innerHTML += "<br><input type='text' class=ed size=50 name='bf_content[]' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.'>";
                <? } ?>
                ;
            }
        }

        <?=$file_script; //수정시에 필요한 스크립트?>

        function del_file()
        {
            // file_length 이하로는 필드가 삭제되지 않아야 합니다.
            var file_length = <?=(int)$file_length?>;
            var objTbl = document.getElementById("variableFiles");
            if (objTbl.rows.length - 1 > file_length)
                objTbl.deleteRow(objTbl.rows.length - 1);
        }
        </script></td>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<? if ($is_trackback) { ?>
<tr height="30">
    <td></td>
    <td align="center">트랙백주소</td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed size=50 name=wr_trackback itemname="트랙백" value="<?=$trackback?>">
        <? if ($w=="u") { ?><input type=checkbox name="re_trackback" value="1">핑 보냄<? } ?></td>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>


<? if ($is_norobot) { ?>
<tr height="30">
    <td></td>
    <td align="center"><?=$norobot_str?></td>
    <td colspan=2></td>
    <td style='padding-left:5px;'><INPUT class=ed type=input size=10 name=wr_key itemname="자동등록방지" required>&nbsp;&nbsp;* 왼쪽의 글자중 <FONT COLOR="red">빨간글자만</FONT> 순서대로 입력하세요.</TD>
    <td></td>
</tr>
<tr><td height="1" background="<?=$board_skin_path?>/img/dot_bg.gif" colSpan=6></td></tr>
<? } ?>

</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td width="100%" height="30" background="<?=$board_skin_path?>/img/write_down_bg.gif"></td>
</tr>
<tr>
    <td width="100%" align="center" valign="top">
        <INPUT type=image id="btn_submit" src="<?=$board_skin_path?>/img/ok_btn.gif" border=0 accesskey='s'>&nbsp;&nbsp;&nbsp;&nbsp;
        <a href="./board.php?bo_table=<?=$bo_table?>"><img id="btn_list" src="<?=$board_skin_path?>/img/list_btn.gif" border=0></a></td>
</tr>
</table>

</td></tr></table>
</form>


<script language="javascript">
<?
// 관리자라면 분류 선택에 '공지' 옵션을 추가함
if ($is_admin)
{
    echo "
    if (typeof(document.fwrite.ca_name) != 'undefined')
    {
        document.fwrite.ca_name.options.length += 1;
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].value = '공지';
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].text = '공지';
    }";
}
?>

with (document.fwrite) {
    if (typeof(wr_name) != "undefined")
        wr_name.focus();
    else if (typeof(wr_subject) != "undefined")
        wr_subject.focus();
    else if (typeof(wr_content) != "undefined")
        wr_content.focus();

    if (typeof(ca_name) != "undefined")
        if (w.value == "u")
            ca_name.value = "<?=$write[ca_name]?>";
}

function html_auto_br(obj)
{
    if (obj.checked) {
        result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if (result)
            obj.value = "html2";
        else
            obj.value = "html1";
    }
    else
        obj.value = "";
}

function fwrite_check(f)
{
    var s = "";
    if (s = word_filter_check(f.wr_subject.value)) {
        alert("제목에 금지단어('"+s+"')가 포함되어있습니다");
        return;
    }

    if (s = word_filter_check(f.wr_content.value)) {
        alert("내용에 금지단어('"+s+"')가 포함되어있습니다");
        return;
    }

    if (char_min > 0 || char_max > 0)
    {
        var cnt = parseInt(document.getElementById('char_count').innerhtml);
        if (char_min > 0 && char_min > cnt)
        {
            alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
            return;
        } else if (char_max > 0 && char_max < cnt)
        {
            alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
            return;
        }
    }

    if (typeof(f.wr_key) != "undefined") {
        if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert("자동등록방지용 빨간글자가 순서대로 입력되지 않았습니다.");
            f.wr_key.focus();
            return;
        }
    }

          // 내용을 합침
            f.wr_content.value += f.elements["content_a"].value;
            f.wr_content.value += f.elements["content_c"].value;
            f.wr_content.value += f.elements["content_b"].value;



    f.action = "./write_update.php";
    f.submit();
}
</script>
더블카테고리 적용한 도서 게시판 스킨 만들고 질문했던 사람입니다.
너무 감사합니다.
친절한 설명 덕분에
write.skin.php는 고쳐준 코드를 그대로 갖다 붙여서
해결했습니다.

근데 님의 테스트화면에서는 검색이 되는데...
제 홈페이지에서는 검색이 안됩니다.
....
홈페이지 방문하셔서 한 번 직접 테스트해보시고....
원인을 안다면...
답변 주시기 바랍니다.

검색문제까지 해결되면
님의 이름과 함께 게시한 스킨을 수정하겠습니다.
© SIRSOFT
현재 페이지 제일 처음으로