읽기포인트 사용해서 읽은 글을 포인트 내역말고 게시판 list에서 구분할 수 있는 방법이 있을까요?
이것저것 해보다 도저히 안나오네요ㅠㅠㅠ
|
답변 3개 / 댓글 1개
채택된 답변
+20 포인트
2025-04-29 (화) 16:46:22
포인트 내역에 게시판 id와 wr_id가 기록 되는데 이것을 이용하지않으려는 이유가 뭔가요?
포인트 테이블 외는 구분할 수 있는 방법이 없습니다
포인트 테이블에 내역이 너무 많이 쌓여서 사용하기 꺼려진다면 두가지 방법이 잇겠습니다
1. 회원 테이블 여분필드에 게시판 아이디와 wr_id를 기록해서 이용
2. 게시물 여분필드에 읽은 사람 아이디 누적해서 이용
마르스컴퍼니
2025-04-29 (화) 16:45:42
* [게시판 스킨 디렉토리]/list.skin.php
1) 상단에 코드 추가 (3 Line 부근)
Copy
// 읽은 글 미리 가져오기
$read_articles = array();
if ($is_member) {
$current_list_ids = array();
for ($i=0; $i<count($list); $i++) {
$current_list_ids[] = $list[$i]['wr_id'];
}
if (count($current_list_ids) > 0) {
$sql = " SELECT po_rel_id FROM {$g5['point_table']}
WHERE mb_id = '{$member['mb_id']}'
AND po_rel_table = '{$bo_table}'
AND po_rel_action = '읽기'
AND po_rel_id IN (".implode(',', $current_list_ids).")";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$read_articles[$row['po_rel_id']] = true;
}
}
}
2) 제목 출력 부분 변경
Copy
<div class="bo_tit">
<a href="<?php echo $list[$i]['href'] ?>">
<?php echo $list[$i]['icon_reply'] ?>
<?php
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
?>
<?php echo $list[$i]['subject'] ?>
</a>
→
Copy
<div class="bo_tit">
<?php
// 읽은 글인지 확인
$is_read = isset($read_articles[$list[$i]['wr_id']]) && $read_articles[$list[$i]['wr_id']];
// 제목에 스타일 적용
$subject = $list[$i]['subject'];
if ($is_read) {
$subject = "<span style='color:#888;'>".$subject."</span>";
}
?>
<a href="<?php echo $list[$i]['href'] ?>">
<?php echo $list[$i]['icon_reply'] ?>
<?php
if (isset($list[$i]['icon_secret'])) echo rtrim($list[$i]['icon_secret']);
?>
<?php echo $subject // 수정된 부분 ?>
<?php if ($is_read) { ?><i class="fa fa-check" style="font-size:11px;color:#8BC34A;margin-left:3px;" title="읽은 글"></i><?php } ?>
</a>
답변에 대한 댓글 1개
ksoon
2025-05-01 (목) 12:15:12
코드까지 너무 감사합니다. 이 부분은 쿠키가 없으면 읽음 표시가 안나서 사용안하고 있습니다. 답변은 너무 감사합니다.
2025-04-29 (화) 09:27:56
리스트와 포인트 사용내역에 게시판아이디와 게시글번호를 기록해서 사용유무를 구분해서 리스트에서 사용유무 표기되도록 처리하시면 되실듯 합니다.
답변을 작성하려면 로그인이 필요합니다.