목록번호를 가상번호로 바꾸는방법입니다.
안녕하세요~ 조그만팁하나 알려드리옵니다...
그누보드에서는 목록번호를 생성할때 DB에 저장된 wr_num 을 이용해 그대로 출력해주는데
이경우에는 글이 하나 삭제가 되면 393/392/391/delete/389 이렇게 지워진번호가 390이 안되고 그대로 다음 wr_num을 읽어서 출력되는 문제(문제는 아니지만 보기가 않좋아서~^^)가 생겨서 오늘 급히 가상번호로 바꾸어봤습니다.
아직 테스트는 많이 하진 않았지만 사용하는데는 문제가 없어보여 이 작은팁을 올려봅니다.
문제점이 발생하거나 버그가 보이시면 [ 댓글 ]달아주시기 바랍니다.
-----------------------------------------------------------------------------------------
다음은 수정할 사항에 대해서 알려드리겠습니다.
bbs/gb_list.php
에디터로 여신후에 90번 라인다음줄에 아래의 코드를 삽입합니다...
$save_wr_num = $save_wr_notice = 0; //90 라인 바로밑에...
아래의 코드를 복사하여 추가하세요.
//--------------------------- [ 1 ] --------------------------------
$Num_Count=$total_count;
if($page!=1){
$Num_Count=$Num_Count-($board[board_page_rows]*($page-1));
}
//--------------------------- [ 1 ] --------------------------------
다음은 바로 아래부분에 보면은 아래와 같은 코드에 // 추가하세요 란 코드만 집어넣어주시거나
통채로 이코드를 교체해주시기 바랍니다.
-----------------------------------[ 2 ]---------------------------------------
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$tr = "";
if ($i && $i%$board[board_gallery_width]==0) {
$tr = "</tr><tr>";
}
$check_for_reply=0; // 이라인을 추가하세요!!!
if ('' != $stext) {
$row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent_id]' and wr_comment = '0' ");
if($row[wr_reply]) $check_for_reply=1; // 이라인을 추가하세요!!!
else $check_for_reply=0; // 이라인을 추가하세요!!!
$subject = conv_subject($row[wr_subject], $board[board_subject_len], "…");
} else {
if($row[wr_reply]) $check_for_reply=1; // 이라인을 추가하세요!!!
else $check_for_reply=0;// 이라인을 추가하세요!!!
$subject = cut_str($row[wr_subject], $board[board_subject_len], "…");
$subject = get_text($subject);
}
------------------------------------[ 2 ] -------------------------------
3번째 코드도 밑에 내려가시면 아래와 같은 코드가 보이십니다.
그곳에 추가하세요!!!! 라는 주석부분을 또 추가하세요
------------------------------------[ 3 ] ---------------------------------
// 3.25
// 목록에서 내용 미리보기 사용한 게시판만 내용을 변환함 (속도 향상) : kkal3(커피)님께서 알려주셨습니다.
if ($board[board_use_listcontent])
$list[$i][content] = conv_content($row[wr_content], $row[wr_html]);
$list[$i][is_notice] = false;
if ($row[wr_notice] == -1) {
$Num_Count--; //4월 1일 오후 9:36분 이전에 패치하신분은 추가해주세요 ;;
$list[$i][num] = "공지";
$list[$i][is_notice] = true;
} else if ($save_wr_num != $row[wr_num] || $save_wr_notice != $row[wr_notice]) {
if($check_for_reply) $list[$i][num] = $Num_Count;//$row[wr_num] * -1; //추가하세요!!!!
else $list[$i][num] = $Num_Count--; // 추가하세요!!!
} else {
$list[$i][num] = " ";
}
----------------------------------------[ 3 ] -------------------------------
마지막으로 아래의 코드도 밑으로 좀만 내려가시면 나옵니다.
그부분에다가 추가하세요 란부분만 추가하세요
---------------------------------------[ 4 ] --------------------------------
$list[$i][reply] = "";
if (strlen($row[wr_reply]) > 0) {
if($wr_id!=$row[wr_id]) $list[$i][num]=$Num_Count--;
else{
$list[$i][num]="<font color=crimson><b>→</b></font>";
$Num_Count--;
}
for ($k=0; $k<strlen($row[wr_reply]); $k++) {
$list[$i][reply] .= " ";
}
}
----------------------------------[ 4 ]---------------------------------
이로써 간단하게나마 가상번호를 게시판에 달수있게되었습니다.
아직 미흡하지만 그런대로 쓸만하여 올리니 이문제점에 골머리를 앓고계셨던 분들께
도움이 되었으면 좋겠습니다...
혹~ 빠진부분이 있을수있으니 반드시 원본은 백업을 하신후에 수정하여 사용해보시기 바랍니다.
그누보드에서는 목록번호를 생성할때 DB에 저장된 wr_num 을 이용해 그대로 출력해주는데
이경우에는 글이 하나 삭제가 되면 393/392/391/delete/389 이렇게 지워진번호가 390이 안되고 그대로 다음 wr_num을 읽어서 출력되는 문제(문제는 아니지만 보기가 않좋아서~^^)가 생겨서 오늘 급히 가상번호로 바꾸어봤습니다.
아직 테스트는 많이 하진 않았지만 사용하는데는 문제가 없어보여 이 작은팁을 올려봅니다.
문제점이 발생하거나 버그가 보이시면 [ 댓글 ]달아주시기 바랍니다.
-----------------------------------------------------------------------------------------
다음은 수정할 사항에 대해서 알려드리겠습니다.
bbs/gb_list.php
에디터로 여신후에 90번 라인다음줄에 아래의 코드를 삽입합니다...
$save_wr_num = $save_wr_notice = 0; //90 라인 바로밑에...
아래의 코드를 복사하여 추가하세요.
//--------------------------- [ 1 ] --------------------------------
$Num_Count=$total_count;
if($page!=1){
$Num_Count=$Num_Count-($board[board_page_rows]*($page-1));
}
//--------------------------- [ 1 ] --------------------------------
다음은 바로 아래부분에 보면은 아래와 같은 코드에 // 추가하세요 란 코드만 집어넣어주시거나
통채로 이코드를 교체해주시기 바랍니다.
-----------------------------------[ 2 ]---------------------------------------
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$tr = "";
if ($i && $i%$board[board_gallery_width]==0) {
$tr = "</tr><tr>";
}
$check_for_reply=0; // 이라인을 추가하세요!!!
if ('' != $stext) {
$row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent_id]' and wr_comment = '0' ");
if($row[wr_reply]) $check_for_reply=1; // 이라인을 추가하세요!!!
else $check_for_reply=0; // 이라인을 추가하세요!!!
$subject = conv_subject($row[wr_subject], $board[board_subject_len], "…");
} else {
if($row[wr_reply]) $check_for_reply=1; // 이라인을 추가하세요!!!
else $check_for_reply=0;// 이라인을 추가하세요!!!
$subject = cut_str($row[wr_subject], $board[board_subject_len], "…");
$subject = get_text($subject);
}
------------------------------------[ 2 ] -------------------------------
3번째 코드도 밑에 내려가시면 아래와 같은 코드가 보이십니다.
그곳에 추가하세요!!!! 라는 주석부분을 또 추가하세요
------------------------------------[ 3 ] ---------------------------------
// 3.25
// 목록에서 내용 미리보기 사용한 게시판만 내용을 변환함 (속도 향상) : kkal3(커피)님께서 알려주셨습니다.
if ($board[board_use_listcontent])
$list[$i][content] = conv_content($row[wr_content], $row[wr_html]);
$list[$i][is_notice] = false;
if ($row[wr_notice] == -1) {
$Num_Count--; //4월 1일 오후 9:36분 이전에 패치하신분은 추가해주세요 ;;
$list[$i][num] = "공지";
$list[$i][is_notice] = true;
} else if ($save_wr_num != $row[wr_num] || $save_wr_notice != $row[wr_notice]) {
if($check_for_reply) $list[$i][num] = $Num_Count;//$row[wr_num] * -1; //추가하세요!!!!
else $list[$i][num] = $Num_Count--; // 추가하세요!!!
} else {
$list[$i][num] = " ";
}
----------------------------------------[ 3 ] -------------------------------
마지막으로 아래의 코드도 밑으로 좀만 내려가시면 나옵니다.
그부분에다가 추가하세요 란부분만 추가하세요
---------------------------------------[ 4 ] --------------------------------
$list[$i][reply] = "";
if (strlen($row[wr_reply]) > 0) {
if($wr_id!=$row[wr_id]) $list[$i][num]=$Num_Count--;
else{
$list[$i][num]="<font color=crimson><b>→</b></font>";
$Num_Count--;
}
for ($k=0; $k<strlen($row[wr_reply]); $k++) {
$list[$i][reply] .= " ";
}
}
----------------------------------[ 4 ]---------------------------------
이로써 간단하게나마 가상번호를 게시판에 달수있게되었습니다.
아직 미흡하지만 그런대로 쓸만하여 올리니 이문제점에 골머리를 앓고계셨던 분들께
도움이 되었으면 좋겠습니다...
혹~ 빠진부분이 있을수있으니 반드시 원본은 백업을 하신후에 수정하여 사용해보시기 바랍니다.
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 12개
그런데 저도 위의 유자님 같은 현상이 생깁니다.
즉, 첫 페이지의 번호가 100~90 번까지 있다면, 두번재 페이지를 가도 100~90번, 셋째 페이지를 가도 100~90,
모든 페이지가 100~90번입니다.
마지막 페이지를 가도 100~90번이더군요.ㅡㅡ;;
아무 소스도 추가하거나 하지 않았고, 위의 소스만을 추가했습니다.
이유가 무엇인지 굼금하네요.
수고하셨습니다. 잘 적용하겠습니다.
가상번호패치를 하여 사용하신분들중에서 공지사항을 입력하면
숫자가 6 5 4 3 2 1로 끝나지 않고 6 5 4 3 2 에서끝나는분들께선 3번코드를 다시 확인하여 수정해주시기 바랍니다.
공지사항 체크할때 $Num_Count 번호를 한개 빼주시면 해결이 가능합니다. 헛,, 아찔 --;
그런데 저는 그런현상이 나타나지 않는거 같습니다.
좀더 구체적인 실험방법좀 알려주셨으면 좋겠습니다.
저만 그런지 모르겠네요.. 답변글을 2개이상 달면 글번호가 -1 -2 이런식으로 되는 문제가 있는것 같습니다.
소스는 4번을 그대로 다시 수정하시면 됩니다.
이소스는 수정하실때 소스의 위치를 정확하게 파악하신후 수정을 권합니다.
답변글 가상번호 버그의 수정된 내용
if (strlen($row[wr_reply]) > 0) {
if($wr_id!=$row[wr_id]) $list[$i][num]=$Num_Count--;
else{
$list[$i][num]="<font color=crimson><b>→</b></font>";
$Num_Count--;
}
for ($k=0; $k<strlen($row[wr_reply]); $k++) {
$list[$i][reply] .= " ";
}
}
^^ 감사히 잘 쓰겠습니다...
게시판 글번호로 링크를 걸어서 다른곳에 글쓰기를 한 후에
원 게시판에서 글 몇개를 삭제했을 경우 가상번호라서 삭제와 상관없이 원래의 글번호가 나오는지..
아니면 가상번호의 글번호가 나오는지 궁금합니다.
그리고 리스트외 다른 내부적인 동작들은 실제 디비에 입력된 번호들로 처리를 하게됩니다.
그리고 삭제/작성/모두삭제/검색등등은 그누보드가 $list[$i][wr_id] 로 처리를 하게되있답니다.
$list[$i][num]은 보여지기만 하는 변수이므로 다른 작동에는 큰지장을 주지 않습니다.
위에 [1]번 수정부분을
//--------------------------- [ 1 ] --------------------------------
$Num_Count=$total_count;
if($page!=1){
$Num_Count=$Num_Count-($board[bo_page_rows]*($page-1)); //$board[board_page_rows]를 $board[bo_page_rows]로 수정
}
//--------------------------- [ 1 ] --------------------------------
와 같이 수정하면 해결되더군요...
기존에 $board[board_page_rows]로 넘어왔던 한 페이지당 보여지는 목록의 수가 버젼이 업됨에 따라
$board[bo_page_rows]로 변경되었기때문에 발생되었던 현상압니다.
마지막으로 유용하고 좋은 소스 주신 최장민님께 감사...^^