그누보드 특정글의 페이지 get값이 없을때 글번호만으로 페이지 위치 찾아주기
페이지 정보
본문
게시글 상세보기했을때 아래에 게시글 리스트 보이기를 쓰시는분이 많을거라 생각됩니다
리스트에서 페이지를 넘어갈때 주소에는 page get값을 들고가 현재 사용자가 보고있는 page위치를 잡아줍니다
(주소창에 page get값이 나타남)
이렇게 page get값을 들고감으로써 현재 사용자가 위치하고있는(보고있는) 페이지위치를 알아내고 표시해줄 수 있죠
하지만 저 page 값이 없다면 어떻게 될까요?
홈페이지 내 검색이나 검색사이트를 통해 접속 또는 특정한 상황에서 게시물을 들어올때 모두 page get값을 들고 올 수는 없습니다(페이징 되는 버튼을 눌러야 현재 사용자의 page get값을 알아낼 수 있기때문입니다)
그렇기에 값이없다면 무조건 해당 글의 위치가 어디가 됐든 무조건 1페이지를 보여주게 되어있습니다
(page값이 없다면 page=1로 지정해두었기 때문)
이럴 경우를 방지 하기 위해서 아래와 같은 함수를 사용하면 그누보드에서 글번호만으로도 현재 페이지 위치를 잡아 자동으로 page값을 줄 수 있습니다.
lib/common.lib.php 에 아래와 같은 함수를 작성해 주세요
// 해당 글번호의 페이지위치
function get_board_page($wr_id, $bo_table){
global $g5, $board, $sca, $sfl, $stx, $sop;
if(G5_IS_MOBILE)
$page_rows = $board['bo_mobile_page_rows'];
else
$page_rows = $board['bo_page_rows'];
$sql_search = "";
if ($sca || $stx || $stx === '0') { //검색이면
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
if($sql_search) $sql_search = " AND ".$sql_search;
}
$write_table = $g5['write_prefix'].$bo_table;
$sql = " SELECT COUNT(wr_id) as page_cnt FROM $write_table WHERE wr_id >= '{$wr_id}' AND wr_is_comment = 0 {$sql_search} order by wr_comment, wr_id;";
//$sql = " SELECT COUNT(DISTINCT wr_parent) as page FROM $write_table WHERE wr_id >= '{$wr_id}' order by wr_comment, wr_id;";
$row = sql_fetch($sql);
$page = ceil((int)$row['page_cnt'] / $page_rows);
return $page;
}
보시면 안의 쿼리문이 두개인데 .... DISTINCT를 원래 썻다가 저게 속도 이슈가 있다고 말만들어서... 위와같이 바꿨는데요
음 저는 테스트 DB가 많지않아서 속도 채감은 별로 안됩니다만 둘중에 빠른걸로 쓰시면 되겠습니다
이렇게 함수를 만들어 주시고
bbs/board.php 에서 23번째줄 if문 안에 넣어주세요(글읽기 부분)
//페이지 위치가 없을때 현재 게시글 페이지 위치
if(!$page && $page != 1) $page = get_board_page($write['wr_id'], $bo_table);
이렇게만 해주시면 page값이 없어도 해당 글번호가 위치해있는 페이지번호를 찾아서 아래 리스트를 불러옵니다.
이제 페이지값이 없어도 알아서 찾기때문에 url뒤에 page값 붙는것도 없애고싶다 하시는분들은
common.php 에서 342번째줄
if (isset($_REQUEST['page'])) { // 리스트 페이지
$page = (int)$_REQUEST['page'];
// if ($page)
// $qstr .= '&page=' . urlencode($page);
} else {
$page = '';
}
if($page)부분을 주석처리해주세요
저부분을 주석하면 url에 page붙는게 없어집니다(없어져도 상관없는게 우리는 이미 함수로 해당글의 위치를 찾도록해놓았기 때문이죠)
그대로 두셔도 되구요 이건 취향이니 쓰시는분 마음에따라..
읽어주셔서 감사합니다 ??
댓글목록
![profile_image](https://ye-ah.net/data/member_image/ad/admin.gif?1679211694)
ssong님의 베스트 댓글
![](https://ye-ah.net/img/level/zb4/super.gif)
https://ye-ah.net/coding/25
베스트 댓글 이동이면 이런거 맞으실까요?
댓글페이지 찾아가기는 board.php에서 접근하시면 안될것같습니다 board.php는 게시글이 작동하는곳이지 댓글이 작동하는곳이 아니기 때문입니다
코맨트의 입출력을 관리하는곳은 view_comment.php 이곳이고 이곳의 코드를 수정하셔야 처리가 가능합니다
근데 이 또한 페이징이 어떤식으로 구현되어있느냐에 따라 다릅니다
제가 이런 말씀을 드린 이유는 저는 아미나를 사용해본적이없어서 그곳의 코드 구조가 어떤지 잘모르기 때문입니다
댓글 페이징이 어떤 파라미터로 넘어가느냐에 따라 그곳의 위치를 찾아서 바로 이동시켜줄수 있기 때문입니다
제 사이트의 댓글페이징 파라미터는 cp로 게시물에서 cp=2등을 입력하시면 댓글페이지 2로 넘어가는걸 확인할수있습니다
베스트댓글의 위치로 이동하고자한다면 view_comment.php든 board.php든 수정할필요는 없어 보입니다
질문주신분의 홈페이지 댓글 구조가 어떻게 되어있느냐에 따라 제가 말씀드린 내용을 참고하여 댓글페이징을 넘어가는 파라미터가 무엇인지, 그리고 해당 댓글의 위치를 찾는 방법등을 알아내시면 될것같네요
댓글 위치를 이동하기 위한 페이징 파라미터가 존재할것이고 그것을 찾아서 이동하는 버튼에 입력해준다면 이동이 가능할것같거든요
![profile_image](https://ye-ah.net/img/no_profile.gif)
![profile_image](https://ye-ah.net/img/no_profile.gif)
유머님의 댓글
![](https://ye-ah.net/img/level/zb4/4.gif)
Warning: Illegal string offset 'count' in /home1/leeseongjae/public_html/skin/board/basic/view_comment.skin.php on line 163
![profile_image](https://ye-ah.net/data/member_image/ad/admin.gif?1679211694)
ssong님의 댓글의 댓글
![](https://ye-ah.net/img/level/zb4/super.gif)
https://ye-ah.net/coding/25
베스트 댓글 이동이면 이런거 맞으실까요?
댓글페이지 찾아가기는 board.php에서 접근하시면 안될것같습니다 board.php는 게시글이 작동하는곳이지 댓글이 작동하는곳이 아니기 때문입니다
코맨트의 입출력을 관리하는곳은 view_comment.php 이곳이고 이곳의 코드를 수정하셔야 처리가 가능합니다
근데 이 또한 페이징이 어떤식으로 구현되어있느냐에 따라 다릅니다
제가 이런 말씀을 드린 이유는 저는 아미나를 사용해본적이없어서 그곳의 코드 구조가 어떤지 잘모르기 때문입니다
댓글 페이징이 어떤 파라미터로 넘어가느냐에 따라 그곳의 위치를 찾아서 바로 이동시켜줄수 있기 때문입니다
제 사이트의 댓글페이징 파라미터는 cp로 게시물에서 cp=2등을 입력하시면 댓글페이지 2로 넘어가는걸 확인할수있습니다
베스트댓글의 위치로 이동하고자한다면 view_comment.php든 board.php든 수정할필요는 없어 보입니다
질문주신분의 홈페이지 댓글 구조가 어떻게 되어있느냐에 따라 제가 말씀드린 내용을 참고하여 댓글페이징을 넘어가는 파라미터가 무엇인지, 그리고 해당 댓글의 위치를 찾는 방법등을 알아내시면 될것같네요
댓글 위치를 이동하기 위한 페이징 파라미터가 존재할것이고 그것을 찾아서 이동하는 버튼에 입력해준다면 이동이 가능할것같거든요
![profile_image](https://ye-ah.net/img/no_profile.gif)
유머님의 댓글의 댓글
![](https://ye-ah.net/img/level/zb4/4.gif)
아! 조금 이해가 가능하게 되었어요! 감사드립니다. 한번 열심히 알아보고 노력하다가..혹시..어려운점 있으면 질문을 좀 드려봐도 될까요 ㅠ.ㅠ
![profile_image](https://ye-ah.net/data/member_image/ad/admin.gif?1679211694)
![profile_image](https://ye-ah.net/img/no_profile.gif)
유머님의 댓글의 댓글
![](https://ye-ah.net/img/level/zb4/4.gif)
운영자님 질문이 있어요!
지금 쓰시는 게시판의 베스트댓글은 어떤식으로 구현하신건가요?
view_comment.php 상단에 일정추천수이상의 댓글을 에드온 형식으로 붙이신건가요?
아니면 자체적함수로 구현하신건가요?~
![profile_image](https://ye-ah.net/data/member_image/ad/admin.gif?1679211694)
ssong님의 댓글의 댓글
![](https://ye-ah.net/img/level/zb4/super.gif)
예아넷에 있는 모든 기능은 일부 제외하곤 거의 자체제작입니다
가져온것도 거의 틀만 쓴게 대부분이에요
퍼블리싱 능력이 아직 부족하다보니 ㅎ
그누보드 베스트 댓글은 정말 쉽습니다 그누보드내 댓글은 하나의 게시물과 같은 취급이라서요(DB 입력위치가 똑같기 때문)
조금만 손을 보면 댓글 추천 기능넣기도 쉽고 추천을 넣었다면 일정 추천수 이상이면 베스트댓글로 표기해주면 끝입니다
- 1(current)