[G4] 코멘트에 필드 추가하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

[G4] 코멘트에 필드 추가하기 정보

[G4] 코멘트에 필드 추가하기

본문

제가 며칠동안 씨름하다가 겨우 해결해낸 허접팁입니다. 초보님들 잘 활용하시기 바랍니다^^; 밑에 설명을 해놓겠지만 아직 허점이 많은 팁입니다. 다만 코멘트에 필드를 추가하는 방법만 이 팁을 통해 알기만 해도 되겠습니다. (물론 초보님들^^;;)

코멘트에 글 외에 다양한 기능을 추가하기 위한 팁입니다. 예를 들면 평점을 매긴다거나 간이쇼핑몰에서 입금은행명, 주문량 등 말이죠. 아래소스를 전부 복사하여 view_comment.skin.php로 저장하면 됩니다. (이 소스는 간이쇼핑몰 게시판의 코멘트를 주문신청 기능으로 활용한 경우입니다) 그리고  bbs/write_comment_update.php를 수정해야 하는데 그건 아래 소스 다음에 올리겠습니다.


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

<table width=100%><tr>
<td>
<img src=http://www.prsae.com/p7/skin/board/test_shop/img/shop_w.jpg border=0>
<td><font color=#cc6666><ul>
<li>로그인 하시면 주문가능합니다.
<li>개인정보보보호 차원에서 주문하신 내용은<br>
<u><b>제품등록자</b>와 <b>주문자</b>에게만</u> 공개됩니다.
</table>

<? if ($is_comment_write) { ?>
    <!-- 코멘트 쓰기 -->
    <table width=100% cellpadding=0 cellspacing=0 border=0 bgcolor=#F5F5F5>

<form name="fboardviewcomment" method="post" action="javascript:fboardviewcomment_check(document.fboardviewcomment);" autocomplete="off">
<input type=hidden name=w        value="c">
<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=page    value="<?=$page?>">
<input type=hidden name=cwin    value="<?=$cwin?>">
<input type=hidden name=wr_2    value="<?=$wr_2?>">
<input type=hidden name=wr_3    value="<?=$wr_3?>">
<input type=hidden name=wr_4    value="<?=$wr_4?>">
<input type=hidden name=wr_5    value="<?=$wr_5?>">
<input type=hidden name=wr_6    value="<?=$wr_6?>">
<input type=hidden name=wr_7    value="<?=$wr_7?>">
<input type=hidden name=wr_8    value="<?=$wr_8?>">

    <tr>
        <td align=center>
            <table width=100% cellpadding=0 cellspacing=0 bgcolor=#FFFFFF border=0>
                <tr>
                    <td colspan=2 align=center>
                        <table width=100% cellpadding=0 cellspacing=0>
                            <tr><td>

<table cellspacing=1 cellpadding=2 border=0 bgcolor=#cccccc width=100%>
<tr bgcolor=#ffffff>
<td width=65 bgcolor=#e5e4e4 align=center>입금자명<FONT COLOR="#FF0000">*</FONT></td>
<td align=center>
<input name='wr_2' type=text class='input' style=width:90% maxlength="292" required itemname='입금자명'></td>
<td width=60 bgcolor=#e5e4e4 align=center>은행명<FONT COLOR="#FF0000">*</FONT></td>
<td width=88 align=center>
<select name='wr_3' class="box" size="1">
<option value='국민'>국민</option>
<option value='농협'>농협</option>
<option value='조흥'>조흥</option>
</select>
<td width=60 bgcolor=#e5e4e4 align=right>주문수량<FONT COLOR="#FF0000">*</FONT></td>
<td width=88 align=center>
<select name='wr_4' class="box" size="1">
<option value='1'>1개</option>
<option value='2'>2개</option>
<option value='3'>3개</option>
<option value='4'>4개</option>
<option value='5'>5개</option>
<option value='6'>6개</option>
<option value='7'>7개</option>
<option value='8'>8개</option>
<option value='9'>9개</option>
<option value='10'>10개</option>
</select></td>
</tr>
</table>

<table cellspacing=1 cellpadding=2 border=0 bgcolor=#cccccc width=100%>
<tr bgcolor=#ffffff>
<td bgcolor=#e5e4e4 width=80 align=center>연락처1<FONT COLOR="#FF0000">*</FONT></td>
<td width=200 align=center>
<input name='wr_5' type=text class='input' style=width:90% maxlength="292" required itemname='연락처1'>
</td>
<td bgcolor=#e5e4e4 width=80 align=center>연락처2<FONT COLOR="#FF0000">*</FONT></td>
<td width=200 align=center>
<input name='wr_6' type=text class='input' style=width:90% maxlength="292" required itemname='연락처2'>
</td>
</tr></table>

<table cellspacing=1 cellpadding=2 border=0 bgcolor=#cccccc width=100%>
<tr bgcolor=#ffffff>
<td bgcolor=#e5e4e4 width=80 align=center>배달지역<FONT COLOR="#FF0000">*</FONT></td>
<td width=107>&nbsp;
<select name='wr_7' class="box" size="1">
<option value='김해시'>김해시</option> 
<option value='서울특별시'>서울특별시</option>
<option value='부산광역시'>부산광역시</option>
<option value='인천광역시'>인천광역시</option>
<option value='대구광역시'>대구광역시</option>
<option value='광주광역시'>광주광역시</option>
<option value='대전광역시'>대전광역시</option>
<option value='울산광역시'>울산광역시</option>
<option value='경기도'>경기도</option>
<option value='강원도'>강원도</option>
<option value='충청북도'>충청북도</option>
<option value='충청남도'>충청남도</option>
<option value='전라북도'>전라북도</option>
<option value='전라남도'>전라남도</option>
<option value='경상북도'>경상북도</option>
<option value='경상남도'>경상남도</option>
<option value='제주시'>제주시</option>
</select>
</td>
<td width=80 bgcolor=#e5e4e4 align=center>상세주소<FONT COLOR="#FF0000">*</FONT></td>
<td align=center>
<input type=text name='wr_8' required itemname='상세주소'  class='input' size=35></td>
</tr>
</table>

<table cellspacing=1 cellpadding=2 border=0 bgcolor=#EFEFEF width=100%>
<tr><td>상세내용<FONT COLOR="#FF0000">*</FONT></td></tr>
<tr><td>
<textarea name=wr_content style='border: 1px solid #C2C2C2; word-break:break-all; width:100%;' rows=5 required
itemname='내용' onclick="if(this.value==this.defaultValue){this.value=''}"
onblur="if (this.value == '') { this.value = this.defaultValue; }">주문합니다^^</textarea></td></tr>
</td><td width=64></td></tr>
                            <tr><td colspan=2 height=5></td></tr>
                        </table>
                    </td>
                </tr>
            </table>
    <INPUT type="image" width="80" height="25" src="<?=$board_skin_path?>/img/ok_button.gif" border=0>
        </td>
    </tr>
    </form>
    </table></td></tr></table><br>

<!-- 코멘트 입력 테이블 끝 -->

<!-- 코멘트 리스트 -->
<? for ($i=0; $i<count($list); $i++) { ?>

    <? if ($list[$i][is_edit]) { // 각 코멘트를 각 코멘트등록자만 볼 수 있게 하기 위한 꼼수 ?>
    <? if ($list[$i][is_del]) {  // 각 코멘트를 각 코멘트등록자만 볼 수 있게 하기 위한 꼼수 ?>

<br>
<?
if($member[mb_id] == $list[$i][mb_id] || $write[mb_id] == $member[mb_id] || $is_admin == 'default') //등록자 목록
{?>
<table width=100% border=0 align=center cellpadding=1 cellspacing=0 bgcolor=#d5d4d4>
    <tr>
        <td height=25>&nbsp;&nbsp;<?=$list[$i][name]?>&nbsp;(<?=$list[$i][ip]?>) </td>
        <td align=right><?=$list[$i][datetime]?> &nbsp;
    <a href="javascript:comment_delete('<?=$list[$i][del_link]?>');"><b><font color=orange>[삭제]</a> &nbsp;
    </tr>
    <tr>
        <td colspan=2 valign=top>

<table width=100% cellpadding=0 cellspacing=0>
<tr><td style='word-break:break-all; text-align:justify;' class='lh tt'>

<table cellspacing=0 cellpadding=5 border=0 width=100%>
  <tr bgcolor=#ffffff>
    <td bgcolor=#e5e4e4 width=60 align=center>입금자명</td>
    <td align=center><?=$list[$i][wr_2]?></td>
    <td bgcolor=#e5e4e4 width=60 align=center>은행명</td>
    <td align=center><?=$list[$i][wr_3]?></td>
    <td bgcolor=#e5e4e4 width=60 align=center>주문수량</td>
    <td align=center><?=$list[$i][wr_4]?></td>
  </tr>
  <tr bgcolor=#d5d4d4><td height=1 colspan=10>
</table>
<table cellspacing=0 cellpadding=5 border=0 width=100%>
  <tr bgcolor=#ffffff>
    <td bgcolor=#e5e4e4 width=60 align=center>연락처1</td>
    <td align=center><?=$list[$i][wr_5]?></td>
    <td bgcolor=#e5e4e4 width=60 align=center>연락처2</td>
    <td align=center><?=$list[$i][wr_6]?></td>
  </tr>
  <tr bgcolor=#d5d4d4><td height=1 colspan=10>
</table>
<table cellspacing=0 cellpadding=5 border=0 width=100%>
  <tr bgcolor=#ffffff>
    <td bgcolor=#e5e4e4 width=60 align=center>배달지역</td>
    <td><?=$list[$i][wr_7]?>&nbsp;<?=$list[$i][wr_8]?></td>
  </tr>
  <tr bgcolor=#d5d4d4><td height=1 colspan=10>
</table>
<table cellspacing=0 cellpadding=5 border=0 width=100%>
  <tr bgcolor=#ffffff>
    <td bgcolor=#e5e4e4 width=60 align=center>상세내용</td>
    <td>&nbsp;<?=$list[$i][content]?></td>
  </tr>
</table>
</td></tr></table>
</td></tr></table>
<? } ?>
    <? }} ?>

<? } ?>

<?
function getURL2(){
$server=getenv("SERVER_NAME");
$file=getenv("SCRIPT_NAME");
$query=getenv("QUERY_STRING");
$url="http://$server$file";
if($query) $url.="?$query";
return $url;
}
$url_p = getURL2();
if (preg_match("/cwin=1/i", $url_p, $matches)) {

 echo "
<center><br>
<input type=button value=' 창닫기 ' onclick='self.close();'
style=font-family:돋움;font-size:8pt;height:18px;>
</center>
<br>
"; } else {}?>

<script language="JavaScript">
function fcomment_submit(f)
{
    var s = word_filter_check(f.wr_content.value);
    if (s) {
        alert("내용에 금지단어("+s+")가 포함되어있습니다");
        return;
    }

    //f.btn_comment_submit.disabled = true;

    f.action = "./write_comment_update.php";
    f.submit();
}
</script>
<!-- 코멘트 리스트 -->

<script language='JavaScript'>
    function fboardviewcomment_check(f)
    {
        var s;
        if (s = word_filter_check(f.wr_content.value)) {
            alert("내용에 금지단어('"+s+"')가 포함되어있습니다");
            f.wr_content.focus();
            return;
        }

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

        //document.getElementById("btn_submit").disabled = true;

        f.action = "./write_comment_update.php";
        f.submit();
    }

    function comment_edit(wr_id)
    {
        var cmnt_edit = wr_id + "_edit";
        var cmnt_disp = document.getElementById(wr_id).style.display;

        if (cmnt_disp == "none") {
            document.getElementById(wr_id).style.display = "";
            document.getElementById(cmnt_edit).style.display = "none";
        } else {
            document.getElementById(wr_id).style.display = "none";
            document.getElementById(cmnt_edit).style.display = "";
        }
    }

function comment_delete(url)
{
    if (confirm("이 코멘트를 삭제하시겠습니까?")) location.href = url;
}
</script>
<? } // if ($is_comment_write) ?>


여기까지. 보시면 아시다시피 wr_2, wr_3 등을 필드로 추가하였죠. 일단 view_comment.skin.php로 저장하시고 이젠 bbs/write_comment_update.php를 아래와 같이 수정합니다. 대략 45번째줄에 가면


if ($w == "c") { // 코멘트 입력
    $sql = " insert into $write_table
                set ca_name = '$wr[ca_name]',
                    wr_option = '',
                    wr_num = '$wr[wr_num]',
                    wr_reply = '',
                    wr_parent = '$wr_id',
                    wr_comment = -1,
                    wr_content = '$wr_content',
                    mb_id = '$mb_id',
                    wr_password = '$wr_password',
                    wr_name = '$wr_name',
                    wr_email = '$wr_email',
                    wr_homepage = '$wr_homepage',
                    wr_datetime = '$g4[time_ymdhis]',
                    wr_ip = '$_SERVER[REMOTE_ADDR]' ";
    sql_query($sql);


이런 구절이 있습니다. 여기에 wr_1, wr_2....를 추가해주면 됩니다. 아래처럼입니다.


if ($w == "c") { // 코멘트 입력
    $sql = " insert into $write_table
                set ca_name = '$wr[ca_name]',
                    wr_option = '',
                    wr_num = '$wr[wr_num]',
                    wr_reply = '',
                    wr_parent = '$wr_id',
                    wr_comment = -1,
                    wr_content = '$wr_content',
                    wr_1 = '$wr_1',
                    wr_2 = '$wr_2',
                    wr_3 = '$wr_3',
                    wr_4 = '$wr_4',
                    wr_5 = '$wr_5',
                    wr_6 = '$wr_6',
                    wr_7 = '$wr_7',
                    wr_8 = '$wr_8',
                    wr_9 = '$wr_9',
                    wr_10 = '$wr_10',
                    mb_id = '$mb_id',
                    wr_password = '$wr_password',
                    wr_name = '$wr_name',
                    wr_email = '$wr_email',
                    wr_homepage = '$wr_homepage',
                    wr_datetime = '$g4[time_ymdhis]',
                    wr_ip = '$_SERVER[REMOTE_ADDR]' ";
    sql_query($sql);


사실 제가 추가한 건 wr_2부터 wr_8까지인데 그냥 1부터 10까지 다 넣었습니다. wr_1은 다른 기능으로 쓰고 있는 경우가 많아서요^^;

그리고 이 팁은 현재 간이쇼핑몰 스킨의 코멘트로 쓰고 있기 때문에 자신의 코멘트는 작성자(주문자)만 볼 수 있게 되어 있습니다. 사실 이걸 해결하려고 며칠을 고민하다가 그누에 이미 있는 기능을 이용해서 꼼수를 부렸습니다. 자신의 코멘트에만 수정/삭제 링크가 보이게 하는 소스 있죠? 그걸 view_comment.skin.php 전체에 적용해버렸습니다. ^^;;; 그래서 이 코멘트 기능을 이용하시려면 본문글을 관리자만 다는 게시판에서만 쓸 수 있습니다. 물론 다른 분들도 본문등록이 가능하게는 되지만 누군가 코멘트를 올려도 관리자와 코멘트 등록자 외에는 볼 수 없기 때문에 의미가 없어서입니다.

때문에 전체회원들에게 공개하시려면 그걸 푸시고 원래대로 수정/삭제 링크에만 다시 씌우면 됩니다. 고수님들은 말만 들어도 아실 테지만 초보님들은 좀 이해가 안되시죠^^;;; 그냥 베이직 스킨의 view_comment.skin.php에서 수정/삭제 링크를 찾아서 이 스킨과 잘 비교해보시면 그리 어렵지 않을 겁니다. 꽤 공부도 되실 겁니다^^;;

앞에서 말씀드린대로 여러가지로 보완할 점이 많습니다. 코멘트를 좀 더 다양하게 응용하실 초보분들에게 도움이 되었으면 하는 마음에 올리는 팁입니다. 그리고 관련 스킨을 G4스킨방에 올렸습니다. ( http://www.sir.co.kr/?doc=bbs/gnuboard.php&bo_table=g4_skin&sselect=&stext=&spart=&wr_id=425&page=1#c430&page=1 )

G4의 무궁한 발전을 위하여!
추천
0

댓글 13개

전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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