제로보드 관련된 유용한 정보를 공유하는 곳입니다.
글 수 98
13
조회 수 : 3292 신고 : 0
출처 : |
---|
중복 파일명이라 다운이 안되었나 봅니다, 파일명 변경해서 업로드 했습니다 (2003/05/02 00:48)
게시물 읽은 사람들 리스트가 나오면 어떨까 혼자 만들어 보다가
hof 님의 소스를 보고 수정에 가깝게 만들었습니다
(소스를 수정해보려다 그냥 새로 했는데 수정이라고 해야겠죠?;;)
http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&no=3272
- 지정 레벨 이상만 기록
- 지정 레벨 이상만 열람
- 글 작성자는 기록하지 않음
- 읽은 사람 수와 읽은 사람 id, 이름 출력
php에 입문한지 얼마 되지 않아 여러모로 허접하고 버그도 있을지 모릅니다
그리고 제가 필요한 부분만 넣어서 좀 단순합니다
필요하신 분 좋게 고쳐서 잘 쓰시면 좋겠네요 (많은 질책 환영합니다)
먼저 게시판 테이블에
reader(TEXT NULL) 와 readername(TEXT NULL) 컬럼을 추가해야합니다
ex) ALTER TABLE zetyx_board_freeboard ADD reader TEXT NULL, ADD readername TEXT NULL
- 제로보드에 추가하는 방법은
1. 스킨의 view.php 에 그대로 붙혀 넣으시거나 이 파일을 include 하거나
2. 제로보드와 같은 폴더에 이 파일을 넣은뒤 제로보드의 view.php 적당한 위치 ( 내용보기와 코멘트 출력 부분 사이 : 264번줄 ) 에
include "reader_list.php"; 이런식으로 include 하면 됩니다
- 지정된 게시판에만 사용하고 싶으시면
if($id == "free" || $id == "diary"){
include "reader_list.php";
}
이런식으로 게시판 아이디를 넣으면 되겠죠
소스의 주석에 약간의 도움말을 넣었습니다
PS (05/02 13:50)
만들때 제 위주로 만든 편이고 중복되는 부분을 줄이다 보니
[읽은 사람 리스트]에 기록되는 사람 레벨 보다
[읽은 사람 리스트]를 조회할 수 있는 사람 레벨이 더 높아야 합니다(제로보드 레벨이니 수치적으로는 작죠;;)
읽은 사람 리스트를 출력할때
기존 기록을 부를 때는 기록되는 사람일 경우에만 불러 오기 때문이죠
이부분을 수정하려면 출력할때도 부른 데이터를 쪼개줘야합니다
-------------------------------------------
시간을 추가하려면
먼저 시간을 기록할 컬럼을 만드시고
예를 들어 readerdate (text null) 라고 만드신후
아래와 같이 수정하면 될거 같네요
(테스트는 안하고 방금 만들어 봤습니다)
<?
$exp = " / "; // 읽은 사람 배열 구분자 ($reader_list 를 통채로 출력하지 않을 경우 수정 하지 않아도 무방)
$w_level = 9; // [읽은 사람 리스트]에 기록할 레벨 (이 레벨 이상만 기록)
$v_level = 1; // [읽은 사람 리스트]를 볼 수 있는 레벨 (이 레벨 이상만 볼 수 있음)
if ($member[level] <= $w_level) {
if ($data[reader]) {
$reader=explode($exp,$data[reader]);
$readername=explode($exp,$data[readername]);
$readerdate=explode($exp,$data[readerdate]);
}
else {
$reader = array();
$readername = array();
$readerdate = array();
$exp = "";
}
if ($data[name] != $member[name] (!$data[reader] || !in_array($member[user_id],$reader))) {
$r_date = time();
$reader_list=$data[reader].$exp.$member[user_id];
$readername_list=$data[readername].$exp.$member[name];
$readerdate_list=$data[readerdate].$exp.$r_date;
array_push($reader, $member[user_id]);
array_push($readername, $member[name]);
array_push($readerdate, $r_date]);
mysql_query("update $t_board"."_$id set reader = '$reader_list' where no='$no'");
mysql_query("update $t_board"."_$id set readername = '$readername_list' where no='$no'");
mysql_query("update $t_board"."_$id set readerdate = $readerdate_list where no='$no'");
}
}
if ($member[level] <= $v_level $reader){ ?>
읽은 회원 (<?=count($reader)?>명) :
<? for ($i=0; $i < count($reader); $i++){ ?>
<B><?=$readername[$i]?></B> (<?=$reader[$i]?> <?=date("Y/m/d H:i:s",$readerdate[$i])?>)
<? }
}
?>
시간 추가한 소스 32번째 라인에
array_push($readerdate, $r_date]);
이걸
array_push($readerdate, $r_date);
이렇게 고쳐야 합니다;; 오타를 =_=
그리고!! 만약에 저 시간을 추가한 소스를 쓸려면
기존에 reader, readername 컬럼을 비워야 합니다
즉 내용을 없애야 매치가 된다 이말입니다;;
delete reader, readername from zetyx_board_free
이런식으로요...
그렇지 않으면 아이디, 이름은 매치가 되지만 시간은 따로 놉니다
왜냐면 시간도 이름과 아이디와 같이 기록되어야 제대로 나오니까요
<출처 :제로보드 ainoai님>
게시물 읽은 사람들 리스트가 나오면 어떨까 혼자 만들어 보다가
hof 님의 소스를 보고 수정에 가깝게 만들었습니다
(소스를 수정해보려다 그냥 새로 했는데 수정이라고 해야겠죠?;;)
http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&no=3272
- 지정 레벨 이상만 기록
- 지정 레벨 이상만 열람
- 글 작성자는 기록하지 않음
- 읽은 사람 수와 읽은 사람 id, 이름 출력
php에 입문한지 얼마 되지 않아 여러모로 허접하고 버그도 있을지 모릅니다
그리고 제가 필요한 부분만 넣어서 좀 단순합니다
필요하신 분 좋게 고쳐서 잘 쓰시면 좋겠네요 (많은 질책 환영합니다)
먼저 게시판 테이블에
reader(TEXT NULL) 와 readername(TEXT NULL) 컬럼을 추가해야합니다
ex) ALTER TABLE zetyx_board_freeboard ADD reader TEXT NULL, ADD readername TEXT NULL
- 제로보드에 추가하는 방법은
1. 스킨의 view.php 에 그대로 붙혀 넣으시거나 이 파일을 include 하거나
2. 제로보드와 같은 폴더에 이 파일을 넣은뒤 제로보드의 view.php 적당한 위치 ( 내용보기와 코멘트 출력 부분 사이 : 264번줄 ) 에
include "reader_list.php"; 이런식으로 include 하면 됩니다
- 지정된 게시판에만 사용하고 싶으시면
if($id == "free" || $id == "diary"){
include "reader_list.php";
}
이런식으로 게시판 아이디를 넣으면 되겠죠
소스의 주석에 약간의 도움말을 넣었습니다
PS (05/02 13:50)
만들때 제 위주로 만든 편이고 중복되는 부분을 줄이다 보니
[읽은 사람 리스트]에 기록되는 사람 레벨 보다
[읽은 사람 리스트]를 조회할 수 있는 사람 레벨이 더 높아야 합니다(제로보드 레벨이니 수치적으로는 작죠;;)
읽은 사람 리스트를 출력할때
기존 기록을 부를 때는 기록되는 사람일 경우에만 불러 오기 때문이죠
이부분을 수정하려면 출력할때도 부른 데이터를 쪼개줘야합니다
-------------------------------------------
시간을 추가하려면
먼저 시간을 기록할 컬럼을 만드시고
예를 들어 readerdate (text null) 라고 만드신후
아래와 같이 수정하면 될거 같네요
(테스트는 안하고 방금 만들어 봤습니다)
<?
$exp = " / "; // 읽은 사람 배열 구분자 ($reader_list 를 통채로 출력하지 않을 경우 수정 하지 않아도 무방)
$w_level = 9; // [읽은 사람 리스트]에 기록할 레벨 (이 레벨 이상만 기록)
$v_level = 1; // [읽은 사람 리스트]를 볼 수 있는 레벨 (이 레벨 이상만 볼 수 있음)
if ($member[level] <= $w_level) {
if ($data[reader]) {
$reader=explode($exp,$data[reader]);
$readername=explode($exp,$data[readername]);
$readerdate=explode($exp,$data[readerdate]);
}
else {
$reader = array();
$readername = array();
$readerdate = array();
$exp = "";
}
if ($data[name] != $member[name] (!$data[reader] || !in_array($member[user_id],$reader))) {
$r_date = time();
$reader_list=$data[reader].$exp.$member[user_id];
$readername_list=$data[readername].$exp.$member[name];
$readerdate_list=$data[readerdate].$exp.$r_date;
array_push($reader, $member[user_id]);
array_push($readername, $member[name]);
array_push($readerdate, $r_date]);
mysql_query("update $t_board"."_$id set reader = '$reader_list' where no='$no'");
mysql_query("update $t_board"."_$id set readername = '$readername_list' where no='$no'");
mysql_query("update $t_board"."_$id set readerdate = $readerdate_list where no='$no'");
}
}
if ($member[level] <= $v_level $reader){ ?>
읽은 회원 (<?=count($reader)?>명) :
<? for ($i=0; $i < count($reader); $i++){ ?>
<B><?=$readername[$i]?></B> (<?=$reader[$i]?> <?=date("Y/m/d H:i:s",$readerdate[$i])?>)
<? }
}
?>
시간 추가한 소스 32번째 라인에
array_push($readerdate, $r_date]);
이걸
array_push($readerdate, $r_date);
이렇게 고쳐야 합니다;; 오타를 =_=
그리고!! 만약에 저 시간을 추가한 소스를 쓸려면
기존에 reader, readername 컬럼을 비워야 합니다
즉 내용을 없애야 매치가 된다 이말입니다;;
delete reader, readername from zetyx_board_free
이런식으로요...
그렇지 않으면 아이디, 이름은 매치가 되지만 시간은 따로 놉니다
왜냐면 시간도 이름과 아이디와 같이 기록되어야 제대로 나오니까요
<출처 :제로보드 ainoai님>
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 아이콘이 붙게됩니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기
본문으로 바로가기
- 추천수 50개이상
- 추천수 30개이상
- 추천수 20개이상
- 추천수 10개이상
- 추천수 3개이상