무제한분류 스킨에서 페이징처리? 정보
무제한분류 스킨에서 페이징처리?관련링크
본문
[갤러리] 기똥찬 무제한분류 갤러리 게시판(http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=24556)에서
무제한 분류설정후 게시판리스트에서 페이징이 안됩니다.
조금 지난 스킨이라고 구식으로보기엔 무제한분류방식이 정말 훌륭합니다.
분류를 다해놓고 사진을 업로드하던중에 알아냈네요. 분류시 페이징이 안된다는걸....
소스를 보면 페이징 처리까지 되어있지만, 제 실력으로 도저히 모르겠네요
일단 전체페이지에선 1 2 3 4 5 6 .... 이렇게 페이지가 잘 표시되지만,
분류된 (아빠사진, 엄마사진등등)곳에서는 페이지표시가 전혀안되네요. 나타나지도 않아요
일단분류페이지로 들어가면 bbs폴더에서 board.php대신에 list_multi_gallery20051111.php라는 아래의 소스가 대신 작동되는 방식같고,
분류를 선택하면 각각의 페이징과 검색을 아래의 소스에서 담당하는거같습니다만....
=====================================================================================
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 분류 사용 여부
$is_category = false;
if ($board[bo_use_category])
{
$is_category = true;
$category_location = "./board.php?bo_table=$bo_table&sca=";
$category_option = get_category_option($bo_table); // SELECT OPTION 태그로 넘겨받음
}
$sop = strtolower($sop);
if ($sop != "and" && $sop != "or")
$sop = "and";
// 분류 선택 또는 검색어가 있다면
if ($sca || $stx)
{
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from $write_table ";
$row = sql_fetch($sql);
$min_spt = $row[min_wr_num];
if (!$spt) $spt = $min_spt;
$sql_search .= " and (wr_num between '".$spt."' and '".($spt + $config[cf_search_part])."') ";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from $write_table where $sql_search ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
}
else
{
$sql_search = "";
$total_count = $board[bo_count_write];
}
$total_page = ceil($total_count / $board[bo_page_rows]); // 전체 페이지 계산
if (!$page) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $board[bo_page_rows]; // 시작 열을 구함
// 관리자라면 CheckBox 보임
$is_checkbox = false;
if ($member[mb_id] && ($is_admin == "super" || $group[gr_admin] == $member[mb_id] || $board[bo_admin] == $member[mb_id]))
$is_checkbox = true;
// 정렬에 사용하는 QUERY_STRING
$qstr2 = "bo_table=$bo_table&sop=$sop";
if ($board[bo_gallery_cols])
$td_width = (int)(100 / $board[bo_gallery_cols]);
// 정렬
// 인덱스 필드가 아니면 정렬에 사용하지 않음
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
if (!$sst)
{
$sst = "wr_num, wr_reply";
$sod = "";
}
$sql_order = " order by $sst $sod ";
if ($sca || $stx){
///////////////###add
$category_info = mysql_fetch_array(sql_query("select name,code,reid,deep,img3,img4,chuchun,best from ".$multi_category." where code='$sca' limit 1")); //카테고리 정보
$sql_search2 ="a.ca_name='$category_info[code]' ";
$childCate_result = sql_query("select * from ".$multi_category_list." where codes like '%$sca%'");
while($childCate_row = mysql_fetch_array($childCate_result)){
$sql_search2 .=" or a.wr_id=".$childCate_row[idr];
}
$sql_search2 .=" or a.ca_name";
$sql_search="(".str_replace("ca_name",$sql_search2,$sql_search).")";
///////////////###add
$sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
$sql=str_replace("where"," a, ".$multi_category_list." b where a.wr_id = b.idr AND ",$sql); //###add
}else{
$sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql);
// 년도 2자리
$today2 = $g4[time_ymd];
$list = array();
$i = 0;
if (!$sca && !$stx)
{
$arr_notice = split("\n", trim($board[bo_notice]));
for ($k=0; $k<count($arr_notice); $k++)
{
$row = sql_fetch(" select * from $write_table where wr_id = '$arr_notice[$k]' ");
if (!$row[wr_id])
continue;
$list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
$list[$i][is_notice] = true;
$i++;
}
}
$k = 0;
while ($row = sql_fetch_array($result))
{
// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
if ($sca || $stx)
$row = sql_fetch(" select * from $write_table where wr_id = '$row[wr_parent]' ");
$list[$i] = get_list($row, $board, $board_skin_path, $board[bo_subject_len]);
if (strstr($sfl, "subject"))
$list[$i][subject] = search_font($stx, $list[$i][subject]);
$list[$i][is_notice] = false;
$list[$i][num] = number_format($total_count - ($page - 1) * $board[bo_page_rows] - $k);
$i++;
$k++;
}
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table".$qstr."&page=");
$list_href = '';
$prev_part_href = '';
$next_part_href = '';
if ($sca || $stx)
{
$list_href = "./board.php?bo_table=$bo_table";
//if ($prev_spt >= $min_spt)
$prev_spt = $spt - $config[cf_search_part];
if (isset($min_spt) && $prev_spt >= $min_spt)
$prev_part_href = "./board.php?bo_table=$bo_table".$qstr."&spt=$prev_spt";
$next_spt = $spt + $config[cf_search_part];
if ($next_spt < 0)
$next_part_href = "./board.php?bo_table=$bo_table".$qstr."&spt=$next_spt";
}
$write_href = "";
if ($member[mb_level] >= $board[bo_write_level])
$write_href = "./write.php?bo_table=$bo_table";
$nobr_begin = $nobr_end = "";
if (preg_match("/gecko|firefox/i", $_SERVER['HTTP_USER_AGENT'])) {
$nobr_begin = "<nobr style='display:block; overflow:hidden;'>";
$nobr_end = "</nobr>";
}
// 4.00.12
$rss_href = "./rss.php?bo_table=$bo_table";
include_once("$board_skin_path/list.skin.php");
?>
===================================================================
추가로 혹시 분류선택시 분류갯수를 표시할수 있었으면 좋겠네요....
예) 가족앨범(12) 여행길(20) 이런식으로....
가능할거같은데 함수구현을 못하겠네요...
댓글 전체
만약 1차 분류가 분류1, 분류2, 분류3, 분류4가 있고,
중분류가 중분류1, 중분류2, 중분류3, 중분류4가 있고,,,
소분류 또한 소분류1, 소분류2, 소분류3, 소분류4가 있다면
게시판에 글을 쓸때
분류1, 분류3, 중분류2, 중분류4, 소분류1, 소분류2, 소분류3
이린식으로 멀티선택이 가능해야하거든요.
가을하늘님이 추천하신 분류는 위와같은 다중분류선택이 불가능합니다.
제가 구지 위의있는 다중분류선택을 고집하는 이유는 사진앨범작업시 위와같은 멀티분류선택이 가능하기때문입니다.
위의 다중분류카테고리소스는 페이징외에 다른 모든기능은 버그가없이 잘 작동됩니다.
혹시 푸름아빠님 가르쳐 주실수 있나요?
하얀별님.. 답을 얻으셨다면.. 저에게도 좀 베풀어 주세요..
저도 난감해용.. 메일로 보내주셔도 좋습니다...
*** 개인정보보호를 위한 이메일주소 노출방지 ***