게시판 글읽기에 포인트를 사용하게 끔 설정하였는데요.
공지사항을 읽어도 포인트가 빠지는 현상이 있네요.
아래 팁을 찾아 수정해보려 했는데
오래된 팁이라 적용이 안되는 것 같습니다.
https://sir.kr/boards/g5_tip/4766
어떻게 해야 공지사항을 읽어도 포인트가 안빠지게 할 수 있을까요?
조언 좀 부탁드립니다.
감사합니다.
답변 5개 / 댓글 5개
// 공지글이라면 글읽기 포인트를 0으로 설정 (공지글은 그냥 읽을 수 있도록)
$read_point = $board['bo_read_point'];
if (isset($board['bo_notice']) && !empty($board['bo_notice']) && isset($write['wr_id'])) {
$notice_ids = preg_split('/\s*,\s*/', trim($board['bo_notice']));
if (in_array($write['wr_id'], $notice_ids)) {
$read_point = 0;
}
}
// 글읽기 포인트가 설정되어 있다면
if ($config['cf_use_point'] && $read_point && $member['mb_point'] + $read_point < 0)
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($read_point).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');
insert_point($member['mb_id'], $read_point, ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
답변에 대한 댓글 1개
답변에 대한 댓글 1개
올려주신 후기(코드를 붙여도 여전히 차감됨)를 보면, 코드 내용보다 적용 방식이나 테스트 방법 쪽 문제일 가능성이 높습니다. 아래 순서로 확인해 보세요.
1. 기존 차감 블록을 교체했는지 확인
새 코드를 추가만 하고 원래 있던 차감 코드(alert 체크 + insert_point 호출)가 그대로 남아 있으면, 새 코드와 무관하게 원래 코드가 계속 포인트를 차감합니다. bbs/board.php에서 insert_point 로 검색해 글읽기 관련 호출이 실제로 몇 군데 실행되는지 확인하시고, 기존 블록은 반드시 주석 처리한 뒤 새 블록으로 대체해야 합니다. 버전에 따라 라인 번호가 달라서 128라인이 아닐 수 있습니다.
2. 테스트 방법 확인
그누보드 글읽기 포인트는 같은 글에 대해 1회만 차감되고(중복 차감 방지), 본인이 쓴 글은 차감하지 않는 것이 기본 동작입니다. 그래서 이미 읽었던 글이나 관리자(글쓴이) 계정으로 테스트하면 결과 판단이 헷갈립니다. 새로 등록한 공지글을 글쓴이가 아닌 일반 회원 계정으로 열어보고, 관리자 페이지의 포인트 내역에서 글읽기 기록이 생기는지로 확인하는 것이 정확합니다.
3. 공지 등록 상태 확인
적용하신 코드가 참조하는 값은 해당 게시판 설정의 bo_notice(공지 wr_id 목록)입니다. 글쓰기에서 공지 체크가 실제로 되어 있는지, 테스트 중인 글이 그 게시판의 공지가 맞는지 확인해 보세요. 공지 해제 후 재등록하면 wr_id 목록이 갱신됩니다.
참고로 board.php는 코어 파일이라 나중에 그누보드를 업데이트하면 수정 내용이 덮어써질 수 있습니다. 수정한 파일과 위치를 따로 기록해 두시길 권장드립니다.
답변에 대한 댓글 1개
답변에 대한 댓글 1개
답변에 대한 댓글 1개
bbs/board.php
에 다른 것 수정없이 그대로 붙여 봤지만 포인트는 여전히 빠집니다.
// 공지사항 여부 확인
$is_notice = false;
$arr_notice = explode(',', trim($board['bo_notice']));
if (in_array($wr_id, $arr_notice)) {
$is_notice = true;
}
// 공지사항이 아닐 때만 포인트 차감
if (!$is_notice) {
if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0) {
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');
}
insert_point(
$member['mb_id'],
$board['bo_read_point'],
((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기',
$bo_table,
$wr_id,
'읽기'
);
}
답변을 작성하려면 로그인이 필요합니다.