최근게시물 페이지버튼링크문제
관련링크
본문
여기 메인에서 2페이지 버튼을 누르면 주소가 bbs 가 빠져서 링크되는데
어딜 수정해야하나요?
bbs/list.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";
// 분류 선택 또는 검색어가 있다면
$stx = trim($stx);
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, false);
$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)
{
if ($board[bo_sort_field])
$sst = $board[bo_sort_field];
else
$sst = "wr_num, wr_reply";
$sod = "";
}
else {
// 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
// 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.
// $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
}
if ($sst)
$sql_order = " order by $sst $sod ";
if ($sca || $stx)
{
$sql = " select distinct wr_parent from $write_table where $sql_search $sql_order limit $from_record, $board[bo_page_rows] ";
}
else
{
$sql = " select * from $write_table where wr_is_comment = 0 $sql_order limit $from_record, $board[bo_page_rows] ";
}
$result = sql_query($sql, false);
// 년도 2자리
$today2 = $g4[time_ymd];
$list = array();
$i = 0;
if (!$sca && !$stx)
{
$arr_notice = explode("\n", trim($board[bo_notice]));
for ($k=0; $k<count($arr_notice); $k++)
{
if (trim($arr_notice[$k])=='') continue;
$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);
$list[$i][num] = $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&page=1";
$next_spt = $spt + $config[cf_search_part];
if ($next_spt < 0)
$next_part_href = "./board.php?bo_table=$bo_table".$qstr."&spt=$next_spt&page=1";
}
$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>";
}
// RSS 보기 사용에 체크가 되어 있어야 RSS 보기 가능 061106
$rss_href = "";
if ($board[bo_use_rss_view])
$rss_href = "./rss.php?bo_table=$bo_table";
$stx = get_text(stripslashes($stx));
include_once("$board_skin_path/list.skin.php");
?>
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
스킨 list.skin.php
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
<?
if (!defined("_GNUBOARD_")) exit;
//불당썸 설치 필 수
include_once("$g4[path]/lib/thumb.lib.php");
$thumb_width = "230"; //썸네일 가로길이
$thumb_height = "0"; //썸네일 세로길이
$filter[type] = 99; // 언샵마스크
$filter[arg1] = 100;
$filter[arg2] = 1;
$filter[arg3] = 2;
if(!$wr_id) {
echo "<link rel='stylesheet' type='text/css' href='".$board_skin_path."/style.css' />\n";
}
if($board[bo_2] == "fancy") {
echo "<link rel='stylesheet' type='text/css' href='$board_skin_path/js/fancy/jquery.fancybox.css' />\n";
echo "<link rel='stylesheet' type='text/css' href='$board_skin_path/js/fancy/helpers/jquery.fancybox-buttons.css?v=2.0.4' />\n";
echo "<script type='text/javascript' src='$board_skin_path/js/fancy/jquery.fancybox.js'></script>\n";
echo "<script type='text/javascript' src='$board_skin_path/js/fancy/helpers/jquery.fancybox-buttons.js?v=2.0.4'></script>\n";
}
echo "<script type='text/javascript' src='".$board_skin_path."/js/common.js'></script>\n";
echo "<script type='text/javascript' src='".$board_skin_path."/js/jquery.tipsy.js'></script>\n";
echo "<script type='text/javascript' src='$board_skin_path/js/jquery.masonry.1.3.2.min.js'></script>\n";
// lib 파일
include_once("$board_skin_path/lib/common.lib.php");
// 페이징
$write_pages = get_new_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table".$qstr."&page=");
// 리스트 갯수
$list_count = count($list);
?>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('.service-tipsy').tipsy({fade: true, gravity: 's'});
});
//]]>
</script>
<?php if($board[bo_2] == "fancy") { ?>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$(".fancybox").fancybox({
padding: 10,
openEffect : 'elastic',
openSpeed : 350,
closeEffect : 'elastic',
closeSpeed : 350,
helpers : {
overlay : {
css : {
'background-color' : '#000'
},
speedIn : 500,
opacity : 0.75
},
buttons : {}
},
afterLoad : function() {
this.title = (this.title ? '' + this.title : '') + ' ' + (this.index + 1) + ' of ' + this.group.length;
}
});
});
//]]>
</script>
<? } ?>
<script type="text/javascript" src="<?=$board_skin_path?>/js/filter.js"></script>
<div id= "portfolio" class="jyboard" style="width:<?=$width>100?$width."px":$width?>">
<form name="fboardlist" action="#boardlist" method="post">
<input type='hidden' name='bo_table' value='<?=$bo_table?>' />
<input type='hidden' name='sfl' value='<?=$sfl?>' />
<input type='hidden' name='stx' value='<?=$stx?>' />
<input type='hidden' name='spt' value='<?=$spt?>' />
<input type='hidden' name='page' value='<?=$page?>' />
<input type='hidden' name='sw' value='' />
<div class="g_list_head">
<? if ($is_checkbox) { ?><input onclick="if (this.checked) all_checked(true); else all_checked(false);" type="checkbox" class="fl"><?}?>
<?php if($is_category) {
echo "<ul id='filtering-nav'>";
echo "<li class='first'><a href='#all' class='service-tipsy' title='카테고리 전체보기' rel='all'>All</a></li>\n";
$ca_name_arr = explode("|", $board[bo_category_list]); // 분류 구분자
for ($i=0; $i<count($ca_name_arr); $i++) {
echo "<li class='cat-item'><a href=\"#{$ca_name_arr[$i]}\" rel=\"{$ca_name_arr[$i]}\" class='service-tipsy' title='{$ca_name_arr[$i]}만 보기'>$ca_name_arr[$i]</a></li>\n";
}
echo "</ul>";
} else { ?>
<div class="fright"></div>
<? } ?>
<div class="fleft">
<p class="txt_notice">
<a href='#'><?=$board[bo_1]?></a>
</p>
</div>
</div><div class="clear"></div>
<div class="items mt30">
<?
for ($i=0; $i<count($list); $i++) {
// 썸네일 이미지가 존재하지 않는다면
$thumb_number = ($list[$i][wr_10])? "".$list[$i][wr_10]."":"0";
$file = $list[$i][file][0][path] .'/'. $list[$i][file][$thumb_number][file];
// 업로드된 파일이 이미지라면
if (preg_match("/\.(jpg|gif|png)$/i", $file) && file_exists($file)) {
$thumb = thumbnail($file, $thumb_width, $thumb_height, 0, 1, 90, 0, "", $filter, $noimg); // 첨부 썸네일
} else { //에디터에서 삽입한 이미지 라면
$edit_img = $list[$i]['wr_content'];
if (preg_match("/<img.*src=\\\"(.*)\\\"/iUs", stripslashes($edit_img), $tmp)) { // 에디터 이미지추출
$file = str_replace($g4[url], "..",$tmp[1]); // 파일명
if (is_file($file)) {
$thumb = thumbnail($file, $thumb_width, $thumb_height, 0, 1, 90, 0, "", $filter, $noimg); // 에디터 썸네일
}
} else {
$thumb = $board_skin_path."/img/no_img_masonry.jpg";
}
}
$subject = "<span class='txt_subject'>비밀글 입니다.</span>";
$list[$i][preview] = "비밀글 입니다.";
$thumfile = "<img src='{$board_skin_path}/img/secret_masonry.jpg' alt='' class='service-tipsy' title='비밀글' />";
$fancybox = "";
if (!strstr($list[$i][wr_option], "secret") || $is_admin || ($list[$i][mb_id]==$member[mb_id] && $member[mb_id])) {
if ($wr_id == $list[$i][wr_id]) {
$thumfile = "<img src='$thumb' alt='' />";
} else if ($list[$i][is_notice] && ! $list[$i][file][0][file]) {
$thumfile = "<img src='{$board_skin_path}/img/notice_masonry.jpg' alt='' class='service-tipsy' title='공지사항' />";
} else if ($list[$i][is_notice] && $list[$i][file][0][file]) {
$thumfile = "<img src='$thumb' alt='' class='service-tipsy' title='공지사항' />";
} else {
$thumfile = "<img src='$thumb' alt='' />";
}
$notice = "";
if ($list[$i][is_notice]) $notice = "<div class='ribbon'><span class='notice'></span></div>";
$hot = "";
if ($list[$i][icon_hot]) $hot = "<div class='ribbon'><span class='hot'></span></div>";
$new_icon = "";
if ($list[$i][icon_new]) $new_icon = "<div class='ribbon'><span class='new'></span></div>";
$class = "off";
if ($wr_id == $list[$i][wr_id]) $class = "on";
$subject = "<span class='txt_subject'>".$list[$i][subject]."</span>";
$list[$i][preview] = strip_tags($list[$i][wr_content]);
$list[$i][preview] = nl2br($list[$i][preview]);
$list[$i][preview] = preg_replace("/\s*<br\s?\/?>\s*/i", " ", $list[$i][preview]);
$list[$i][preview] = str_replace("\"", "", $list[$i][preview]);
$list[$i][preview] = str_replace(" ", "", $list[$i][preview]);
$list[$i][preview] = str_replace(">", "", $list[$i][preview]);
$list[$i][preview] = conv_subject($list[$i][preview], 100, "...");
if(!$list[$i][preview]) $list[$i][preview] = "내용없음";
$fancybox = "class=\"fancybox\" href='$file' data-fancybox-group='$board[bo_table]' ";
}
if (! is_file($file)) $fancybox = "";
$comment_cnt = "";
if ($list[$i][comment_cnt])
$comment_cnt = " <a class='txt_comment' href=\"{$list[$i][comment_href]}\"><span style='font-family:Tahoma;font-size:10px;color:#FF4326;'><strong>{$list[$i][comment_cnt]}</strong></span></a>";
if($board[bo_2] == "fancy") {
echo "<div class='box {$list[$i][ca_name]}'>".$notice."".$hot."".$new_icon."<a $fancybox title='".strip_tags($subject)."'>$thumfile</a>\n";
} else {
echo "<div class='box {$list[$i][ca_name]}'>".$notice."".$hot."".$new_icon."<a href='{$list[$i][href]}'>$thumfile</a>\n";
}
?>
<div class="postit">
<div class="entry-header">
<p><?php if ($is_checkbox) { ?><input type="checkbox" name="chk_wr_id[]" value="<?=$list[$i][wr_id]?>"> <? } ?> <a href="<?=$list[$i][href]?>"><?=strip_tags($subject)?></a></p>
</div>
<div class="clear"></div>
<div class="entry-content">
<p><?=$list[$i][preview]?></p>
</div>
<div class="clear"></div>
<div class="entry-meta">
<? if ($list[$i][is_notice]) { ?>
<span class="triangles"></span>
<span class="date bold">공지사항</span>
<div class="comment"><?=$list[$i][datetime2]?><? echo " <span class='service-tipsy' title='코멘트'>".$comment_cnt?></span></div>
<? } else { ?>
<span class="triangles"></span>
<span class="date"><?=$list[$i][name]?></span>
<div class="comment"><?=$list[$i][datetime2]?><? echo " <span class='service-tipsy' title='코멘트'>".$comment_cnt?></span></div>
<? } ?>
</div>
</div>
<? echo "</div>\n";
}
?>
</div><!-- // class:items -->
<div class="clearfix"></div>
</form>
<? if($total_page > 1) { ?><div class="paging_area"><?=$write_pages?></div><? } ?>
<div class="list_btm">
<div class="fleft">
<a class="btn_search" href="javascript:layer_search();" title="관리자">관리자</a>
<div id="se_sector" class="fleft" style="display:none;">
<form name="fsearch" method="get">
<input type="hidden" name="bo_table" value="<?=$bo_table?>">
<input type="hidden" name="sca" value="<?=$sca?>">
<input type="hidden" name="sfl" value="<?=$sfl?$sfl:"wr_subject"?>">
<input type="hidden" name="sop" value="<?=$sop?$sop:"and"?>">
<div id="se-sfl" class="jyselect se_sfl">
<a class="selected selected_sfl" href="javascript:;" title="검색항목">제목</a>
<ul>
<li><a href="javascript:;" onclick="click_select(this, 'wr_subject');" title="제목">제목</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'wr_content');" title="내용">내용</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'wr_subject||wr_content');" title="제목+내용">제목+내용</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'mb_id,1');" title="회원아이디">회원아이디</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'mb_id,0');" title="회원아이디(코)">회원아이디(코)</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'wr_name,1');" title="글쓴이">글쓴이</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'wr_name,0');" title="글쓴이(코)">글쓴이(코)</a></li>
</ul>
</div>
<div class="input_stx_wrap">
<input id="stx" name="stx" class="inputbox" maxlength="15" itemname="검색어" required value='<?=stripslashes($stx)?>' style="width:104px;">
<label for="stx">검색어입력</label>
</div>
<div id="se-sop" class="jyselect se_sop">
<a class="selected selected_sop" href="javascript:;" title="검색조건">AND</a>
<ul>
<li><a href="javascript:;" onclick="click_select(this, 'and');" title="AND">AND</a></li>
<li><a href="javascript:;" onclick="click_select(this, 'or');" title="OR">OR</a></li>
</ul>
</div>
<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" class="btn_submit" alt="검색" />
</form>
</div>
</div>
<div class="fright">
<? if ($is_checkbox) { ?>
<div id="se-func" class="jyselect se_func">
<a class="selected selected_func" href="javascript:;" title="선택명령">선택명령</a>
<ul>
<li><a href="javascript:select_copy('copy');" title="선택복사">선택복사</a></li>
<li><a href="javascript:select_copy('move');" title="선택이동">선택이동</a></li>
<li><a href="javascript:select_delete();" title="선택삭제">선택삭제</a></li>
</ul>
</div>
<? } ?>
<? if($admin_href) { ?>
<a class="btn_adm" href="<?=$admin_href?>" title="관리자">관리자</a>
<? } ?>
<a class="btn_write" href="<?=$write_href?>" title="글쓰기">글쓰기</a>
</div>
</div>
</div>
<script type="text/javascript">
// 검색 레이어
var layer_search = function() {
if(jQuery("#se_sector").is(":hidden")) {
jQuery("#se_sector").show();
jQuery("#stx").focus();
} else {
jQuery("#se_sector").hide();
}
}
/* 안내 열기,닫기 */
var layer_point = function() {
$handle = jQuery("#btn_anno_point");
$target = jQuery("#point_layer");
if($handle.hasClass("on")) {
$handle.removeClass("on");
$target.hide();
jQuery("#point_layer_arrow").remove();
} else {
var $offset = $handle.offset();
var $offset = $handle.offset();
var $top = $offset.top+29;
var $left = $offset.left+16;
jQuery("#fixed-top-layer").append("<div id='point_layer_arrow' class='ico_arrow' style='top:"+$top+"px; left:"+$left+"px'><span class='ico_up_dgray'></span></div>");
$handle.addClass("on");
$target.show();
}
}
var click_select = function(el, value) {
event_select(jQuery(el), value);
}
var load_select = function(sfl) {
$this = jQuery("a[onclick*="+sfl+"]:first");
event_select($this, sfl);
};
var event_select = function($this, value) {
$li = $this.parent();
$a = $li.parent().prev();
$input = jQuery("input[name="+$a.parent().attr("id").split("-")[1]+"]");
$a.html($this.html());
$input.val(value);
$li.parent().children(".on").removeClass("on");
$li.addClass("on");
}
load_select('wr_subject');load_select('and');
jQuery(function() {
// 박스 활성화
jQuery('.inputbox').focus(function() {
jQuery(this).addClass('focusbox');
jQuery("label[for="+jQuery(this).attr("id")+"]").hide();
}).blur(function() {
jQuery(this).removeClass('focusbox');
if(!jQuery.trim(jQuery(this).val())) jQuery("label[for="+jQuery(this).attr("id")+"]").show();
else jQuery("label[for="+jQuery(this).attr("id")+"]").hide();
});
// 검색창 blur
jQuery("#stx").blur()
// 셀렉트박스
selectbox("#se-ctgr");
selectbox("#se-func");
selectbox("#se-sfl");
selectbox("#se-sop");
});
</script>
<? if ($is_checkbox) { ?>
<script type="text/javascript" language="javascript">
function all_checked(sw) {
var f = document.fboardlist;
//<![CDATA[
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]")
f.elements[i].checked = sw;
}
//]]>
}
function check_confirm(str)
{
var f = document.fboardlist;
var chk_count = 0;
//<![CDATA[
for (var i=0; i<f.length; i++) {
if (f.elements[i].name == "chk_wr_id[]" && f.elements[i].checked)
chk_count++;
}
//]]>
if (!chk_count) {
alert(str + "할 게시물을 하나 이상 선택하세요.");
return false;
}
return true;
}
// 선택한 게시물 삭제
function select_delete()
{
var f = document.fboardlist;
str = "삭제";
if (!check_confirm(str))
return;
if (!confirm("선택한 게시물을 정말 "+str+" 하시겠습니까?\n\n한번 "+str+"한 자료는 복구할 수 없습니다"))
return;
f.action = "./delete_all.php";
f.submit();
}
// 선택한 게시물 복사 및 이동
function select_copy(sw)
{
var f = document.fboardlist;
if (sw == "copy") str = "복사";
else str = "이동";
if (!check_confirm(str))
return;
var sub_win = window.open("", "move", "left=50, top=50, width=500, height=550, scrollbars=1");
f.sw.value = sw;
f.target = "move";
f.action = "./move.php";
f.submit();
}
</script>
<? } ?>
답변 2
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, G5_BBS_URL."/board.php?bo_table=$bo_table".$qstr."&page=");
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./board.php?bo_table=$bo_table".$qstr."&page=");
이부분을
$write_pages = get_paging($config[cf_write_pages], $page, $total_page, "./bbs/board.php?bo_table=$bo_table".$qstr."&page=");