코멘트 + 평점주기,평가그래프,보너스포인트 - 회원전용(수정5) > 그누4 팁자료실

그누4 팁자료실

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

코멘트 + 평점주기,평가그래프,보너스포인트 - 회원전용(수정5) 정보

코멘트 + 평점주기,평가그래프,보너스포인트 - 회원전용(수정5)

첨부파일

bg_img.zip (1.1K) 453회 다운로드 2006-01-16 03:21:32

본문

747422099_72e3175d_s1.jpg'

747422099_0a80433c_s2.jpg'

747422099_ce403eb8_s3.jpg'

747422099_29ecb395_s4.jpg'

※코멘트 + 평점주기,평가그래프 - 회원전용

*수정해야할 파일은 다음과 같습니다.
=========================================
1.보드스킨/view.skin.php__________________평가그래프,평점,참여인원,획득포인트 출력
2.보드스킨/view_comment.skin.php__________평가그래프,평가점수 출력
3.보드스킨/write.skin.php_________________글수정시 평가점수 삭제 안되게 wr_9 삽입

*수정 또는 생성할 파일은 다음과 같습니다.
=========================================
4.보드스킨/write_comment_update.skin.php__평가점수 기록,평가포인트지급
5.보드스킨/delete_comment.skin.php________평가점수 삭제,평가포인트회수
6.보드스킨/delete.skin.php_____________________상동
7.bbs/delete_all.php______________________상동
8.extend/xxx.lib.php______________________평가그래프 함수


*평가점수는 회원만 사용가능 합니다.
*게시물 여유필드 9를 사용합니다.
*코멘트 작성시 평가점수는 한 회원당 한번만 줄 수 있게 되어 있습니다.
 (write_comment_update.skin.php 쪽에서 조절 가능합니다. 만약 코멘트 글쓴 갯수로
 코멘트쓰기를 제한 하시려면 http://sir.co.kr/bbs/tb.php/g4_tiptech/2136 를 참조하세요.
 꼭 함께 써야 하는 건 아닙니다.)
*코멘트 평가점수와 평가포인트값이 동일하게 설정하거나 또는 비율값을 적용합니다.
 (평가점수 5 = 원글 작성자에게 지급되는 평가포인트 5 x 비율값)
*원글 작성자는 코멘트에 평가점수를 줄 수 없습니다.
*평가점수는 1~10까지로 설정되어 있습니다.
*delete_all.php를 제외하고는 모두 스킨파일쪽에서 처리되도록 했습니다.
 (평가포인트 지급된거 회수하는 내용이므로 꼭 필요한 건 아닙니다.)
*평가그래프는 네이버영화에서 본 뜬 것으로 적절히 수정하시면 됩니다.


코멘트 평가점수와 평가포인트가 함께 작동되는데, 소스에서 주석처리로 평가포인트 부분은
사용 안하게 하셔도 되겠습니다.

수정 2006.4.1
-view.skin.php 수정 (원글 wr_9에 기록되는 평가점수 관련값에 약간 변화)
-write_commnet_update.skin.php 수정 (소스 수정)
-delete_comment.skin.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
-delete.skin.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
-delete.all.php 수정 (평가점수와 평가포인트의 비율 $rate 변수추가)
수정 2005.1.17
-보드스킨/view_comment.skin.php 부분 소스 에러 수정했습니다. 한분도 지적 않해 주셨네요;
수정 2005.1.20
-글수정시 기록된 평가점수가 사라지는 에러를 수정요 (write.skin.php 수정추가)
수정 2006.3.24
-소스 약간 수정 (평가포인트합계 계산 및 출력부분)

↓작업시작
=========================================================
1.
▶보드스킨/view.skin.php 파일을 여시고..



// 링크
$cnt = 0;
for ($i=1; $i<=$g4[link_count]; $i++)
{
    if ($view[link][$i])
    {
        $cnt++;
        $link = cut_str($view[link][$i], 65);
        echo "<tr><td height=22>&nbsp;&nbsp;<img src='{$board_skin_path}/img/icon_link.gif' align=absmiddle> <a href='{$view[link_href][$i]}' target=_blank><strong>{$link}</strong> ({$view[link_hit][$i]})</a></td></tr>";
    }
}
?>



▶위 소스 다음 줄즘에 ...



<!--★평점주기관련시작-->
<?
//if ($view[wr_9]) {
    $arr = explode("|",$view[wr_9]); //여유필드9 이용
    if ($arr[0] == 10) {$average_score = 10;} else if ($arr[0] == 0) {$average_score = 0;} else {$average_score = number_format($arr[0],2);} //평균점수
    $tm_count = number_format($arr[1]); //참여인원
    $total_point = number_format($arr[3]); //포인트합계
    $ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여) <img src='{$board_skin_path}/img/icon_point.gif' align=absmiddle> <u><strong>{$total_point}</strong>포인트 획득</u>";
    echo "<tr><td height=22><table></tr><td width=1></td><td>". percentage_graph($average_score,'10',$board_skin_path)."</td><td>$ment</td></tr></table></td></tr>";
//}
?>
<!--★평점주기관련끝-->



▶위 소스를 추가해 넣습니다.

※위 처럼 하시면 글보기 화면상단에 "평가그래프 8.33/10 (3명 참여)  25포인트 획득" 이런식으로 표현되겠습니다.
첨부이미지 참조하세요. 평점은 소수점 2자리로 출력되게 되어 있습니다.
percentage_graph($average_score,'10',$board_skin_path) 이건 평가그래프 함수로 처리한 건데요. 10점이 최고값이고
현재값(여기선 $average_score)을 넣어주면 $board_skin_path 쪽에 함수내 정의된 이미지로 백분율로 계산되어 표시됩니다.
$list[$i][wr_9] 값을 받아서 리스트 페이지에도 저런식으로 삽입이 가능하겠습니다.
그래프는 이미지화일 없으면 빈 공간으로만 나오겠습니다.
=========================================================
=========================================================
2.
보드스킨/view_comment.skin.php 파일을 여시고..



            <td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo "&nbsp;({$list[$i][ip]})"; } ?></strong></td>

▶위 소스를...


            <td>
              <table><tr>
                  <td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo "&nbsp;({$list[$i][ip]})"; } ?></strong></td>
                  <!--★평점주기관련시작-->
                  <?if ($list[$i][wr_9]) {?>
                  <td title='평가점수 <?=$list[$i][wr_9]?>점'><?echo percentage_graph($list[$i][wr_9],'10',$board_skin_path)?></td>
                  <td style='padding-top:4;'>(<?=$list[$i][wr_9]?> 점)</td>
                  <?}?>
                  <td><input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'></td>
                  <!--★평점주기관련끝-->
                </tr></table>
            </td>


▶위와 같은 형태로 수정해 줍니다. 보시고 적절히 수정하세요. 아래로 내려가셔서..


    <td width="95%">
        <textarea id="wr_content" name="wr_content" rows="10" itemname="내용" required
            <? if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?> style='width:100%; word-break:break-all;' class=tx></textarea>
            <? if ($comment_min || $comment_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?></td>
    <td width=80 align=center><input type="image" src="<?=$board_skin_path?>/img/ok_btn.gif" border=0 accesskey='s'></td></tr>
   
▶위 소스를..


    <td width="95%">
        <textarea id="wr_content" name="wr_content" rows="10" itemname="내용" required
            <? if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?> style='width:100%; word-break:break-all;' class=tx></textarea>
            <? if ($comment_min || $comment_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?>
        <!--★평점주기관련시작-->
        <?if ($member[mb_id]) {?>
        <div align=right>
        코멘트와 함께 <select name="wr_9" style='width:40px;height:19px'>
            <option value=''>0</option>
            <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> 점의 평가점수를 원글에 부여합니다.
        </div>   
        <?}?>
        <!--★평점주기관련끝-->
    </td>
    <td width=80 align=center><input type="image" src="<?=$board_skin_path?>/img/ok_btn.gif" border=0 accesskey='s'></td></tr>
   
   
▶위와 같은 형태로 수정해 줍니다. 아래 스크립트 부분으로 내려가셔서..


        // 코멘트 수정
        if (work == 'cu')
        {
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
        }


▶위 소스를...

        // 코멘트 수정
        if (work == 'cu')
        {
            //★평점주기관련시작
            <?if ($member[mb_id]) {?>
            var f = fviewcomment.wr_9;
            var is_score = parseInt(document.getElementById('is_score_' + comment_id).value);
            for (i = 0; i < f.length; i++) {
            if (f.options[i].value == is_score || !is_score && !f.options[i].value) f.options[i].selected = true;
            }
            <?}?>
            //★평점주기관련끝
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
        }

▶위와 같이 수정해 줍니다.

=========================================================
=========================================================
3.
▶보드스킨/write.skin.php 파일을 여시고..



<input type=hidden name=sod      value="<?=$sod?>">
<input type=hidden name=page    value="<?=$page?>">



▶위 소스 다음 줄즘에 ...



<input type=hidden name=wr_9    value="<?=$write[wr_9]?>"> <?//★평점주기관련?>



▶위 소스를 추가해 넣습니다.

※글 수정시 wr_9에 저장된 값을 불러와서 다시 기록하지 않으면 초기화 되어 버리므로
평가점수가 사라져 버립니다. 위 처럼 해주면 해결 됩니다.
=========================================================
=========================================================
4.
보드스킨/write_comment_update.skin.php 화일을 만듭니다. 아래는 전체소스입니다.

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

//★평점주기관련추가시작
//회원만 적용되며, 평가점수는 1번만 줄 수 있고, 여유필드 wr_9를 사용합니다.
//아래 소스는 보드스킨/write_comment_update.skin.php용입니다.

if ($member[mb_id]) {
    $rate = 15; //★평가포인트 = 평가점수 * $rate

    //원글 정보
    $arr = sql_fetch("select mb_id from $write_table where wr_id='$wr_id'");
    $source_mb_id = $arr[mb_id]; //원글 작성자의 id
   
    //평가점수를 준 자신의 코멘트 정보들
    $arr2 = mysql_fetch_array(mysql_query("select count(*) from $write_table where wr_parent = '$wr_id' and wr_is_comment ='1' and wr_9 > 0 and mb_id = '$member[mb_id]'"));
    $already = $arr2[0] - 1; //원글에 평가점수를 준 자신의 코멘트 갯수 (현재꺼 제외)

    //코멘트 수정시 조건을 위해 정보필요
    if ($w == "cu") {
        $arr3 = mysql_fetch_array(mysql_query("select wr_9 from $write_table where where wr_id='$comment_id'"));
        $old_score = $arr3[0] * $rate; //수정하려는 코멘트의 평가점수
    }

    //동일인(원글=코멘트작성인) 또는 이미 1개이상 평가점수 준 회원인가? 또는 원글작성자가 비회원인가..
    $limit = 1; //한 사람당 평가점수 줄 수 있는 갯수
    if (($w == "c" && $member[mb_id] == $source_mb_id) || ($w == "c" && $already >= $limit) || !$source_mb_id) {

        @mysql_query("update $write_table set wr_9='' where wr_id='$comment_id'"); //평가점수 취소

    } else {
   
        //원글에 결과 기록작업
        //평가점수가 있는 코멘트 정보만 가져온다.
        $result = sql_query("select wr_9 from $write_table where wr_parent = '$wr_id' and wr_is_comment ='1' and mb_id != '$source_mb_id' and wr_9 > 0 ");
        $total_count = mysql_num_rows($result); //참여인원
        if ($total_count) {
            for ($i=0; $row=sql_fetch_array($result); $i++) {
                $sum_score += $row[wr_9]; //평가점수합계
                $sum_point += $row[wr_9] * $rate; //평가포인트합계
            }
            $average_score = $sum_score / $total_count; //평균점수
            //원글의 wr_9필드에 "평균점수|참여인원|평가포인트합계|점수합계"를 구분자(|)와 함께 기록
            @mysql_query("update $write_table set wr_9='$average_score|$total_count|$sum_point|$sum_score' where wr_id='$wr_id'");
        }
       
        //원글 작성자에게 평가평가포인트주기 (필요에 따라 주석처리)
        //평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
        $c_bonus_point = $wr_9 * $rate; //평가포인트
        if ($w == "cu") {
          if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가포인트')) insert_point($source_mb_id, $old_score * (-1), ""); //기존 포인트보상금 제거,환불
        }
        if ($c_bonus_point) insert_point($source_mb_id, $c_bonus_point, "$board[bo_subject] {$wr_id}-{$comment_id} 코멘트평가포인트지급", $bo_table, $comment_id, '코멘트평가포인트'); //포인트지급
    }
}
//★평점주기관련추가끝
?>

=========================================================
=========================================================
5.
보드스킨/delete_comment.skin.php 화일을 만듭니다. 아래는 전체소스입니다.


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

//★평점주기관련추가시작
//회원만 적용되며, 평가점수는 1번만 줄 수 있고, 여유필드 wr_9를 사용합니다.
//아래 소스는 보드스킨/delete_comment.skin.php용입니다.

if ($member[mb_id]) {

    $rate = 15; //★평가포인트 = 평가점수 * $rate
   
    //원글에 결과 기록작업
    //평가점수가 있는 코멘트 정보만 가져온다.
    $result = sql_query("select wr_9 from $write_table where wr_parent = '$write[wr_parent]' and wr_is_comment ='1' and mb_id != '$source_mb_id' and wr_9 > 0 ");
    $total_count = mysql_num_rows($result); //참여인원
    if ($total_count) {
        for ($i=0; $row=sql_fetch_array($result); $i++) {
            $sum_score += $row[wr_9]; //평가점수합계
            $sum_point += $row[wr_9] * $rate; //평가포인트합계
        }
        $average_score = $sum_score / $total_count; //평균점수
        //원글의 wr_9필드에 "평균점수|참여인원|평가포인트합계|점수합계"를 구분자(|)와 함께 기록
        @mysql_query("update $write_table set wr_9='$average_score|$total_count|$sum_point|$sum_score' where wr_id='$write[wr_parent]'");
    } else {
        @mysql_query("update $write_table set wr_9='' where wr_id='$write[wr_parent]'"); //원글의 wr_9필드 초기화
    }

    //원글 작성자에게 지급된 평가평가포인트 회수 (필요에 따라 주석처리)
    //평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
    //원글정보
    $arr =mysql_fetch_array(mysql_query("select mb_id from $write_table where wr_id='$write[wr_parent]'"));
    $source_mb_id = $arr[0]; //원글 작성자의 id
    $c_bonus_point = $write[wr_9] * $rate; //평가포인트
    if ($member[mb_id] != $source_mb_id) //동일인이 아닐 경우
    {
        if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가포인트'))
            insert_point($source_mb_id, $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_parent]}-{$comment_id} 코멘트평가포인트회수");
    }
}
//★평점주기관련추가끝
?>

※코멘트가 삭제 될때, 평가점수를 새롭게 정리합니다. 평가포인트도 원글작성자로 부터 회수합니다.
=========================================================
=========================================================
6.
보드스킨/delete.skin.php 화일을 만듭니다. 아래는 전체소스입니다.


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

//★평점주기관련추가시작
//원글 작성자에게 지급된 평가포인트 회수 (필요에 따라 주석처리)
//평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
//아래 소스는 보드스킨/delete.skin.php용입니다.

$sql = " select wr_id, wr_9 from $write_table where wr_parent = '$write[wr_id]' and wr_is_comment ='1' and wr_9 > 0 order by wr_9 desc ";
$result = sql_query($sql);
$rate = 15; //★평가포인트 = 평가점수 * $rate
while ($row = sql_fetch_array($result))
{
    $c_bonus_point = $row[wr_9] * $rate; //평가포인트
    if (!delete_point($write[mb_id], $bo_table, $row[wr_id], '코멘트평가포인트'))
    insert_point($write[mb_id], $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_id]}-{$row[wr_id]} 코멘트평가포인트회수");
}
//★평점주기관련추가끝
?>

※글삭제시 해당글의 코멘트에 평가점수가 있고, 평가포인트가 원글작성자에게
지급되었다면... 모두 회수합니다. 평가포인트를 평가점수와 함께 지급하는 경우가
아니라면 불필요합니다.
=========================================================
=========================================================
7.
bbs/delete_all.php 파일을 여시고..


    // 나라오름님 수정 : 원글과 코멘트수가 정상적으로 업데이트 되지 않는 오류를 잡아 주셨습니다.
    //$sql = " select wr_id, mb_id, wr_comment from $write_table where wr_parent = '$write[wr_id]' order by wr_id ";
    $sql = " select wr_id, mb_id, wr_is_comment from $write_table where wr_parent = '$write[wr_id]' order by wr_id ";
    $result = sql_query($sql);
    while ($row = sql_fetch_array($result))
    {


위 소스 윗줄 즘에..

    //★평점주기관련추가시작
    //원글 작성자에게 지급된 평가포인트 회수 (필요에 따라 주석처리)
    //평가점수와 평가포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
    $sql = " select wr_id, wr_9 from $write_table where wr_parent = '$write[wr_id]' and wr_is_comment ='1' and wr_9 > 0 order by wr_9 desc ";
    $result = sql_query($sql);
    $rate = 15; //★평가포인트 = 평가점수 * $rate
    while ($row = sql_fetch_array($result))
    {
        $c_bonus_point = $row[wr_9] * $rate; //평가포인트
        if (!delete_point($write[mb_id], $bo_table, $row[wr_id], '코멘트평가포인트'))
        insert_point($write[mb_id], $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_id]}-{$row[wr_id]} 코멘트평가포인트회수");
    }
    //★평점주기관련추가끝
   
위 소스를 추가해 넣습니다.

※ delete_all.php 화일은 작업 안하셔도 상관은 없습니다. 평가포인트를 지급하게 사용하신
경우라면 필요하겠고, 그렇지 않다면 없어도 됩니다.
관리자 일괄 글삭제시 해당글 내의 코멘트의 평가정보로 인한 평가포인트 지급된 사항을
회수하는 내용입니다.
=========================================================
=========================================================
8.
extend/xxx.lib.php 라는 적절한 이름으로 화일을 드시고, 아래는 전체소스입니다.


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

//==소스시작
//퍼센테이지 그래프 - 평가점수용
//$now 현재값, $max 최고값, $path 그래프경로
//echo percentage_graph('8.5','10',$board_skin_path)
function percentage_graph($now='',$max='',$path='') {

global $g4;

    $percentage = $now * 100 / $max; //백분율

    return "
    <table cellpadding=0 cellspacing=0 border=0 width=81 height=13 align='center' background='{$path}/img/star_s_bg.gif' title='{$percentage}%'>
    <tr>
    <td>
    <!-- 평균값에 따라 테이블 width 값 변경 -->
    <table cellpadding=0 cellspacing=0 border=0 width={$percentage}% height=13 background='{$path}/img/star_s.gif'><tr><td></td></tr></table>
    <!-- 평균값에 따라 테이블 width 값 변경 -->
    </td>
    </tr>
    </table>
    ";
}
//==소스끝
?>

※최고값과, 현재값과 이미지가 있는 경로만 입력시키면...
글목록이나 글보기 등에서 사용 가능하겠습니다. 첨부이미지 참고하세요.
함수의 리턴내용을 걍 꺼내서 삽입하고 적절히 쓰셔도 상관 없습니다.
/lib 폴더에 만드셔서 필요한 곳에서만 불러 쓰셔도 되겠구요.
=========================================================
↑작업끝


※문제점 발견되면 말씀해 주세요.

추천
16
  • 복사

댓글 56개

view.comment.skin.php에서 평가점수 주는 셀렉트 박스 내용 수정됩습니다.

욱..이론... 비회원에게 회원이 평가점수를 주는 일이 발생하네요.. 그 부분 수정해서 다시 올리겠습니다.
↑ 보드스킨/write_comment_update.skin.php 내용 수정되었습니다.;

혹시 한사람이 여러번 평가점수 적용 된다면, 보드스킨/write_comment_update.skin.php의 $limit 값이 1인지 확인해 보세요.

보드스킨/view_comment.skin.php 자바스크립트 부분 수정되었습니다.
오 항상 그누보드4에 새로운 기능을 부여 해 주시는군요. ^^
별포인트와 추천평점을 따로 분리해서 같이 표시하거나 둘중 하나 표시하지 않게 하는것도 좋겠네요. ^^
아..;;; 위 내용은 코멘트평가점수에만 해당된 내용이에요. 별그래프도 역시 코멘트평가점수합계를 백분율화해서 표현하는 것입니다. 추천하고는 별개의 것이에요.


만약, 게시판에서 코멘트평가점수 기능은 안쓰고, 그냥 추천점수만 별그래프를 이용하고 싶다면...
또는 코멘트평가점수에서 별그래프는 안쓰고, 추천점수만 별그래프로 함께 이용한다면..
 (-아래쪽 코멘트에 '※보너스포인트는 작동하지 않게 하는 방법' 참조하시구요.)

1.list.skin.php 에서라면..
추천점수합계 최고값을 임의로 정하셔서 한 100 이라고 가정하고..
<?echo percentage_graph($list[$i][wr_good],'100',$board_skin_path)?> 이런식으로 원하는 곳에 삽입하시면
백분율화해서 별그래프로 추천점수를 표현해 주겠습니다. 최고값 100점에서 현재 추천점수가 몇퍼센트에 해당하는지를 표현한다는 말이겠죠.
혹시라도 100점이 넘어도 그래프는 별표 5개로 나오겠죠. 별 상관은 없을 듯 합니다.

2.view.skin.php 에서라면..
<?echo percentage_graph($view[wr_good],'100',$board_skin_path)?> 이런식으로 원하는 곳에 삽입하시면 되겠구요.


코멘트평가점수와 같이 쓴다면 별그래프가 같아서 곤란하겠죠. 별그래프와 다른 이미지를 필요로 하겠죠.
-별그래프 함수쪽을 응용하면, 그래프를 선택적으로 변수로 받아서 다르게 뿌려줄 수도 있겠습니다
멋진기능 입니다. ^^;저도 비슷한 기능을 만들다가 잠시 딴짓하느라 아직 미완성 상태로 있는데
걍~포기하고 이팁을 사용 할렵니다.ㅎㅎ
제말은 별포인트는 자기포인트를 주는거
추천평점은 자기포인트 안주고 그냥 평가하는거
이렇게 두개가 다 되는것도 괞찮지 않을까하는거죠.
그리고 반대로 저 포인트를 주면 표시되는거 말고 게시자에게 포인트선물하기 해가지고 저 점수하고는 상관없는 그런기능에 대해서 예전에 팁이있었거든요.
그러니까 주고싶은 사람은 개인적으로 주고 게시물 평가는 그냥 할 수있게..
저게 나눠진것도 필요하다는거죠.
만약 위와같은 통합형 이라면 게시물 삭제하면 덧글이 다삭제되니까 포인트도 다 차감되겠죠.
아니라해도 그렇게 되야 맞는거고 그 게시물에서만 준 포인트이니까..^^
네.. 맞습니다.
현재 본문의 내용은 좀 단순하게 "평가점수=보너스포인트점수" 로 되어 있는데..
코멘트 작성할때 '평가점수' 와 '보너스포인트' 를 따로 줄 수 있는거 말씀이시죠.
위 내용 응용만 하면 가능 합니다.

둘로 나누자니, 코멘트 한번 쓰는데 번거로울꺼 같기도 하고, 글작성에 의욕을
더해주기 위해 가능하면 평점을 주면 간단히 포인트도 함께 받도록 가볍게 유도했습니다.
꼭 포인트 더 주고 싶다면, 쪽지로 포인트선물하기를 하면 되지 않을까 생각하고요..
제 맘대로 생각하다보니 그리 되었습니다.
- 아.. 그리고 코멘트 보너스포인트는 코멘트작성자의 포인트에서 빠져 나가는건 아닙니다.

※ 현재 내용으로는 기본값이 평균점수값이 0으로 되어 있는데, 혹시라도 평가점수를
기본적으로 코멘트와 함께 주도록 하려면..
            <option value='10'>10</option>
            <option value='9'>9</option>
            <option value='8'>8</option>
            <option value='7'>7</option>
            <option value='6'>6</option>
            <option value='5'>5</option>
            <option value='4'>4</option>
            <option value='3'>3</option>
            <option value='2'>2</option>
            <option value='1'>1</option>
            <option value=''>0</option>
요런식으로 순서만 조정해 주시면... 평가점수 기본 10점씩 팍팍 들어가겠죠.
원글 쓰신는 분은 코멘트로 인해 평가점수 또는 포인트 팍팍 쌓게 유도할 수 있겠습니다.
※보너스포인트는 작동하지 않게 하는 방법입니다. (To 샴푸걸님 ..)

본문 내용에서..

1.
보드스킨/view.skin.php 파일에서

▶$ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여) <img src='{$board_skin_path}/img/icon_point.gif' align=absmiddle> <u><strong>{$total_score}</strong>포인트 획득</u>";

위 소스를요..

$ment = "<strong>{$average_score}</strong>/10 ({$tm_count}명 참여)";

▶위 처럼 바꾸시면 되구요..
======================
3.
보드스킨/write_comment_update.skin.php 에서

        //원글 작성자에게 평가보너스포인트주기 (필요에 따라 주석처리)
        //평가점수와 보너스포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
        $c_bonus_point = $wr_9; //보너스포인트
        if ($w == "cu") {
          if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가보너스')) insert_point($source_mb_id, $now_score * (-1), ""); //기존 코멘트평가보너스 제거,환불
        }
        insert_point($source_mb_id, $c_bonus_point, "$board[bo_subject] {$wr_id}-{$comment_id} 코멘트평가보너스지급", $bo_table, $comment_id, '코멘트평가보너스'); //포인트지급
    }
} else {
     
      if ($wr_9 > 0) @mysql_query("update $write_table set wr_9='' where wr_id='$comment_id'"); //평가점수 취소

▶위 소스를 주석처리 하시던지... 제거하시구요... 코멘트쓸때 포인트보너스주는거에요.
======================
4.
보드스킨/delete_comment.skin.php 에서

    //원글 작성자에게 지급된 평가보너스포인트 회수 (필요에 따라 주석처리)
    //평가점수와 보너스포인트가 동일한 경우로 설정되어 있습니다. 적절히 수정해서 쓰셔도 됩니다.
    //원글정보
    $arr =mysql_fetch_array(mysql_query("select mb_id from $write_table where wr_id='$write[wr_parent]'"));
    $source_mb_id = $arr[0]; //원글 작성자의 id
    $c_bonus_point = $write[wr_9]; //보너스포인트
    if ($member[mb_id] != $source_mb_id) //동일인이 아닐 경우
    {
        if (!delete_point($source_mb_id, $bo_table, $comment_id, '코멘트평가보너스'))
            insert_point($source_mb_id, $c_bonus_point * (-1), "$board[bo_subject] {$write[wr_parent]}-{$comment_id} 코멘트평가보너스회수");
    }
}

▶위 소스를 주석처리 하시던지... 제거하시구요... 포인트보너스준거 회수하는거에요.
======================
5.6.
bbs/delete.skin.php 와 bbs/delete_all.php 에서요..

"//★평점주기관련추가시작 ~ //★평점주기관련추가끝"의 사이내용을 주석처리 하시던지..
제거하시던지... 보드스킨/delete.skin.php 화일은 스킨폴더에서 지우셔도 됩니다.
물론 다른 내용이 함께 들어 있지 않다면 말이죠.
bbs/delete.skin.php 가 아니고 보드스킨/delete.skin.php 입니다.. 잘못 표기 되었었습니다. 수정됐습니다;;


※코멘트 평가점수와 보너스포인트를 다르게 주기 (현재: 코멘트평가점수=보너스포인트)

수정대상====
3.보드스킨/write_comment_update.skin.php
5.보드스킨/delete.skin.php
6.bbs/delete_all.php

$c_bonus_point = $wr_9; //보너스포인트 (write_comment_update.skin.php)
또는 $c_bonus_point = $row[wr_9]; //보너스포인트 (delete.skin.php 또는 delete_all.php)

위 소스를 아래 예제에서 처럼 주석처리 하시고, 바로 다음 줄에 추가소스를 삽입하시면 됩니다.


예제1) 평가점수마다 보너스포인트 별도로 적용하기

        //$c_bonus_point = $wr_9; //보너스포인트
        if($wr_9 == 10)
                      {$c_bonus_point = 300;}
        else if($wr_9 == 9)
                      {$c_bonus_point = 240;}       
        else if($wr_9 == 8)
                      {$c_bonus_point = 190;}

        중간생략...

        else if($wr_9 == 1)
                      {$c_bonus_point = 10;}

예제2) 평가점수를 구간으로 설정해서 보너스포인트 적용하기

        //$c_bonus_point = $wr_9; //보너스포인트
        if($wr_9 <= 2)
                      {$c_bonus_point = 10;}
        else if($wr_9 <= 4)
                      {$c_bonus_point = 25;}       
        else if($wr_9 <= 6)
                      {$c_bonus_point = 36;}

        중간생략...

        else if($wr_9 <= 10)
                      {$c_bonus_point = 240;}
                     
예제3) 평가점수의 10배를 보너스포인트로 주고자 할때..

        //$c_bonus_point = $wr_9; //보너스포인트
        $c_bonus_point = $wr_9 * 10; //보너스포인트
       

등등..
-보드스킨/view_comment.skin.php 처음 부분 소스 에러 수정했습니다. 한분도 지적 않해 주셨네요;
에러수정 없이 혹~시라도 적용하신 분이 계셨다면, 코멘트 수정버튼 클릭시 스크립트 오류가 발생했을 겁니다.
<input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'> 부분이 wr_9값이 있던 없던 출력되어야 하는데 조건문 안에 들어가 있어서 ... 발생했습니다. 코멘트 수정시 기록된 평가점수로 selected 되게 하느라 사용했습니다;

수정된 내용입니다.


            <td>
              <table><tr>
                  <td><strong><?=$list[$i][name]?><? if ($is_ip_view) { echo "&nbsp;({$list[$i][ip]})"; } ?></strong></td>
                  <!--★평점주기관련시작-->
                  <?if ($list[$i][wr_9]) {?>
                  <td title='평가점수 <?=$list[$i][wr_9]?>점'><?echo percentage_graph($list[$i][wr_9],'10',$board_skin_path)?></td>
                  <td style='padding-top:4;'>(<?=$list[$i][wr_9]?> 점)</td>
                  <?}?>
                  <td><input type='hidden' id='is_score_<?=$comment_id?>' value='<?=$list[$i][wr_9]?>'></td>
                  <!--★평점주기관련끝-->
                </tr></table>
            </td>
너무너무 감격입니다.. 아쵸오님 수고 많이 하셨구요....
혹시 이런방법도 가능할지 질문드립니다?
지금 같은경우는 평가한 포인트를 점수대로 임의로 생성해서 주게 되는거 같은데
그 포인트를 평가한 회원의 포인트로 차감하여 주는방법은 없을까요?

바쁘시더라도 가르침 부탁드립니다..^^
http://sir.co.kr/bbs/tb.php/g4_tiptech/2084
요 링크로 가셔서 한번 소스 참고해 보세요. 포인트 보상금을 게시물에 첨가하는건데.. 저 링크 내용에서는
회원의 포인트에서 빠져나가게 했거든요. 참고하셔서 응용해보세요. 죄송합니다.
그누보드 4.06.17  요 버전에서는 write_comment_update.skin.php 파일이 안 먹히는 것 같아요.

포인트를 주어도 포인트가 기록되지 않네요.

한번 확인 부탁드립니다. 감사합니다.
4.06.11에서 적용된 내용들이라서 4.06.17에서는 확인을 못해 봤습니다. 어짜피 팁이므로 소스 보시고 응용을 좀 하셔서 적용하시면 별문제 없을꺼라 생각은 하는데요.. 여건상 제가 직접 확인해 드리지 못해서 죄송합니다.
extend/ 디렉토리에 lib을 넣었더니... 이런 애러가 나오네요.

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 39

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 40

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 41

Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/diorcafe/www/gnuboard4/extend/rating_lib.php:29) in /home/hosting_users/diorcafe/www/gnuboard4/head.sub.php on line 42
문제가 하나 나왔어요. 수정 부탁드려도 될까요???

- 글쓴이가 포인트를 부여하는 코멘트를 작성 (포인트 반영 안됨)
- 다른 사람이 포인트를 부여하는 코멘트를 작성 (포인트 반영 됨)
- 다른 사람이 포인트를 부여하는 코멘트를 삭제 (글쓴이의 포인트가 반영됨~!!!)

* 글쓴이의 포인트는 어떤 상황에서도 반영되면 안되는데... 누군가 코멘트를 지우면
  그때 글쓴이의 포인트가 반영이 되요. -..-a
수정햇습니다. delete_comment.skin.php에서 ...

    //원글에 결과 기록작업
    //평가점수가 있는 코멘트 정보만 가져온다.

윗부분에 아래를 넣어주면 됩니다.

    //원글 정보
    $arr = sql_fetch("select mb_id from $write_table where wr_id='$wr_id'");
    $source_mb_id = $arr[mb_id]; //원글 작성자의 id
© SIRSOFT
현재 페이지 제일 처음으로