게시판에서 리플은 리스트 번호 안나오게 하는 방법이 있나요? > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

게시판에서 리플은 리스트 번호 안나오게 하는 방법이 있나요? 정보

게시판에서 리플은 리스트 번호 안나오게 하는 방법이 있나요?

본문

이래저래 수정도 해보고 검색도 해봤지만 해결을 하지 못해 질문 글을 남깁니다.

첫번째 이미지 처럼 기본적으로 그누보드에서 리플을 쓰면 리플에도 번호가 달리더라구요..

두번째 이미지처럼
리플에는 번호를 없애고 일반글에만 번호를 달아서 순서대로 나오게 하는 방법이 없을까요?

답변 부탁드리겠습니다.

댓글 전체

답변 감사합니다.^^
그렇게 하면 되겠다.. 라는 생각은 해봤지만
프로그래머가 아니라서 소스를 만드는걸 할 수가 없네요..
있는 소스를 수정을 해본다고 했지만 답이나오질 않아서 질문글 올렸습니다..ㅠㅠ
쓰고있는 게시판 스킨 list.skin.php를 복사해서 올려 주세요.  배포되는 basic스킨과 유저들이나 빌더님들이 올려 놓으신 스킨들이 달라서 정확하게 답변이 달리지 않게됩니다.
아, 죄송합니다... 그 부분에 대해서 따로 글을 남기질 않았네요..
그누보드 기본게시판 입니다.
백그라운드가 검정색에 투명이라 색상하고 아아콘만 변경한 상태입니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 선택옵션으로 인해 셀합치기가 가변적으로 변함
$colspan = 4;

//if ($is_category) $colspan++;
if ($is_checkbox) $colspan++;
if ($is_good) $colspan++;
if ($is_nogood) $colspan++;

// 제목이 두줄로 표시되는 경우 이 코드를 사용해 보세요.
// <nobr style='display:block; overflow:hidden; width:000px;'>제목</nobr>
?>

<!-- 게시판 목록 시작 -->
<table width="<?=$width?>" align="center" cellpadding="0" cellspacing="0"><tr><td>

<!-- 분류 셀렉트 박스, 게시물 몇건, 관리자화면 링크 -->
      <div class="board_top">
        <div style="float:left;">
          <form name="fcategory" method="get" style="margin:0px;">
            <? if ($is_category) { ?>
            <select name=sca onchange="location='<?=$category_location?>'+this.value;">
              <option value=''>전체</option>
              <?=$category_option?>
            </select>
            <? } ?>
          </form>
        </div>
        <div style="float:right;padding:7px;"> <img src="<?=$board_skin_path?>/img/icon_total.gif" align="absmiddle" border='0'> <span style="color:#888888;font:12px verdana,굴림;letter-spacing:-0.05em;">전체
          <?=number_format($total_count)?>
          건</span>
          <? if ($rss_href) { ?><a href='<?=$rss_href?>'><img src='<?=$board_skin_path?>/img/btn_rss.gif' border='0' align="absmiddle"></a><?}?>
          <? if ($admin_href) { ?><a href="<?=$admin_href?>"><img src="<?=$board_skin_path?>/img/btn_admin.gif" border='0' title="관리자" align="absmiddle"></a><?}?>
        </div>
      </div>
  <br />

    <!-- 제목 -->
    <form name="fboardlist" 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=''>

    <table cellspacing="0" cellpadding="0" class="board_list">
    <col width="40" />
    <? if ($is_checkbox) { ?><col width="30" /><? } ?>
    <col />
    <col width="70" />
    <col width="50" />
    <? if ($is_good) { ?><col width="40" /><? } ?>
    <? if ($is_nogood) { ?><col width="40" /><? } ?>
    <tr>
        <th><span style="color:#888888;">번호</span></th>
        <? if ($is_checkbox) { ?><th><input onclick="if (this.checked) all_checked(true); else all_checked(false);" type="checkbox"></th><?}?>
        <th><span style="color:#888888;">제&nbsp;&nbsp;&nbsp;목</span></th>
        <th><span style="color:#888888;">글쓴이</span></th>
        <th><span style="color:#888888;">작성일</span></a></th>
<!--<th><?=subject_sort_link('wr_datetime', $qstr2, 1)?>날짜</a></th>//-->
        <!--<th><?=subject_sort_link('wr_hit', $qstr2, 1)?>조회</a></th>//-->
        <? if ($is_good) { ?><th><?=subject_sort_link('wr_good', $qstr2, 1)?>추천</a></th><?}?>
        <? if ($is_nogood) { ?><th><?=subject_sort_link('wr_nogood', $qstr2, 1)?>비추천</a></th><?}?>
    </tr>

    <?
    for ($i=0; $i<count($list); $i++) {
        $bg = $i%2 ? 0 : 1;
    ?>

    <tr class="bg<?=$bg?>">
        <td class="num">
            <?
            if ($list[$i][is_notice]) // 공지사항
                echo "<img src='$board_skin_path/img/icon_notice.gif' align='absmiddle' border='0'>";
            else if ($wr_id == $list[$i][wr_id]) // 현재위치
                echo "<span class='current'>{$list[$i][num]}</span>";
            else
                echo $list[$i][num];
            ?>
        </td>
        <? if ($is_checkbox) { ?><td class="checkbox"><input type=checkbox name=chk_wr_id[] value="<?=$list[$i][wr_id]?>"></td><? } ?>
        <td align="left" class="subject">
        <?
            echo $nobr_begin;
            echo $list[$i][reply];
            echo $list[$i][icon_reply];

            if ($is_category && $list[$i][ca_name]) {
                echo "<span class=small><font color=gray>[<a href='{$list[$i][ca_name_href]}'>{$list[$i][ca_name]}</a>]</font></span> ";
            }

            if ($list[$i][is_notice])
                echo "<a href='{$list[$i][href]}'><span class='notice'>{$list[$i][subject]}</span></a>";
            else
                echo "<a href='{$list[$i][href]}'>{$list[$i][subject]}</a>";

            if ($list[$i][comment_cnt])
                echo " <a href=\"{$list[$i][comment_href]}\"><span class='comment'>{$list[$i][comment_cnt]}</span></a>";

            // if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
            // if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }

            echo " " . $list[$i][icon_new];
            //echo " " . $list[$i][icon_file];
            //echo " " . $list[$i][icon_link];
            //echo " " . $list[$i][icon_hot];
            echo " " . $list[$i][icon_secret];
            echo $nobr_end;
            ?>
        </td>
        <td class="name"><?=$list[$i][name]?></td>
        <td class="datetime"><?=$list[$i][datetime2]?></td>
        <!--<td class="hit"><?=$list[$i][wr_hit]?></td>//-->
        <? if ($is_good) { ?><td class="good"><?=$list[$i][wr_good]?></td><? } ?>
        <? if ($is_nogood) { ?><td class="nogood"><?=$list[$i][wr_nogood]?></td><? } ?>
    </tr>
    <? } // end for ?>

    <? if (count($list) == 0) { echo "<tr><td colspan='$colspan' height=100 align=center>게시물이 없습니다.</td></tr>"; } ?>

    </table>
    </form>

    <div class="board_button">
        <div style="float:left;">
        <? if ($list_href) { ?>
        <a href="<?=$list_href?>"><img src="<?=$board_skin_path?>/img/btn_list.gif" align="absmiddle" border='0'></a>
        <? } ?>
        <? if ($is_checkbox) { ?>
        <a href="javascript:select_delete();"><img src="<?=$board_skin_path?>/img/btn_select_delete.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('copy');"><img src="<?=$board_skin_path?>/img/btn_select_copy.gif" align="absmiddle" border='0'></a>
        <a href="javascript:select_copy('move');"><img src="<?=$board_skin_path?>/img/btn_select_move.gif" align="absmiddle" border='0'></a>
        <? } ?>
        </div>

        <div style="float:right;">
        <? if ($write_href) { ?><a href="<?=$write_href?>"><img src="<?=$board_skin_path?>/img/btn_write.gif" border='0'></a><? } ?>
        </div>
    </div>

    <!-- 페이지 -->
    <div class="board_page">
        <? if ($prev_part_href) { echo "<a href='$prev_part_href'><img src='$board_skin_path/img/page_search_prev.gif' border='0' align=absmiddle title='이전검색'></a>"; } ?>
        <?
        // 기본으로 넘어오는 페이지를 아래와 같이 변환하여 이미지로도 출력할 수 있습니다.
        //echo $write_pages;
        $write_pages = str_replace("처음", "<img src='$board_skin_path/img/page_begin.gif' border='0' align='absmiddle' title='처음'>", $write_pages);
        $write_pages = str_replace("이전", "<img src='$board_skin_path/img/page_prev.gif' border='0' align='absmiddle' title='이전'>", $write_pages);
        $write_pages = str_replace("다음", "<img src='$board_skin_path/img/page_next.gif' border='0' align='absmiddle' title='다음'>", $write_pages);
        $write_pages = str_replace("맨끝", "<img src='$board_skin_path/img/page_end.gif' border='0' align='absmiddle' title='맨끝'>", $write_pages);
        //$write_pages = preg_replace("/<span>([0-9]*)<\/span>/", "$1", $write_pages);
        $write_pages = preg_replace("/<b>([0-9]*)<\/b>/", "<b><span style=\"color:#4D6185; font-size:12px; text-decoration:underline;\">$1</span></b>", $write_pages);
        ?>
        <?=$write_pages?>
        <? if ($next_part_href) { echo "<a href='$next_part_href'><img src='$board_skin_path/img/page_search_next.gif' border='0' align=absmiddle title='다음검색'></a>"; } ?>
    </div>

    <!-- 검색 -->
    <div class="board_search">
        <form name="fsearch" method="get">
        <input type="hidden" name="bo_table" value="<?=$bo_table?>">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        <select name="sfl" style="background-color:#333333;border-width:1px; border-color:#555555; color:#cccccc; height:19px;">
            <option value="wr_subject">제목</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <option value="mb_id,1">아이디</option>
            <option value="wr_name,1">작성자</option>
        </select>
        <input name="stx" class="stx" maxlength="15" itemname="검색어" required value='<?=$stx?>' style="background-color:#333333;border-width:1px; border-color:#555555; color:#cccccc; height:17px;">
        <input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">
        <input type="radio" name="sop" value="and"><span style='color:#888888;'>and</span>
        <input type="radio" name="sop" value="or"><span style='color:#888888;'>or</span>
        </form>
    </div>

</td></tr></table>



<? if ($is_checkbox) { ?>
<script language="JavaScript">
function all_checked(sw) {
    var f = document.fboardlist;

    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;

    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>
<? } ?>
<!-- 게시판 목록 끝 -->
번호를 다시 만드는 것은 스킨에서도 할 수 있는 것이지만 아래와 같은 경우는 생각해 보았는지요?
한 페이지당 목록수는 고정되어있으니(기본은 15개)
1페이지 마지막 게시물에 답변글이 5개가 있다고 할 때 2번째 답변글 까지만 출력되고 나머지는 2페이지로 넘어가야할 경우가 생길 수 있겠지요
답변글이 모두 나오지않게 되는 것이지요
2페이지에서는 첫번째 부터 게시글은 원글도 번호도 없이 답변글만 3개가 나오게 됩니다
페이지당 목록수를 정할 수 밖에 없으니 이렇게 되지않도록 하는 방법은 없으리라 봅니다

더 쉬운 예를들자면 원게시물이 한개, 답변글이 20개가 있다고 한다면
2페이지는 어떻게 나오게 될지 생각해보세요
관리자가 글 하나에 리플 하나씩 다는거라고 해서 대수롭지 않게 생각했는데
만약의 경우, 리플이 여러개 달리는 경우가 생기면 그런 문제가 생기겠네요..

리스트스킨 수정만으로는 완벽하게 해결할 수 있는 부분이 아니었나보네요....
조금 더 생각해봐야겠습니다..

답변 감사합니다.^^
<?
    for ($i=0; $i<count($list); $i++) {
        $bg = $i%2 ? 0 : 1;
    ?>

    <tr class="bg<?=$bg?>">
        <td class="num">
            <?
            if ($list[$i][is_notice]) // 공지사항
                echo "<img src='$board_skin_path/img/icon_notice.gif' align='absmiddle' border='0'>";
            else if ($wr_id == $list[$i][wr_id]) // 현재위치
                echo "<span class='current'>{$list[$i][num]}</span>";
            else
                echo $list[$i][num];
            ?>
        </td>

이 부분을 아래와 같이 변경 해 보세요.
 
  <?
    for ($i=0, $ni=0; $i<count($list); $i++) {
        $bg = $i%2 ? 0 : 1;
    ?>

    <tr class="bg<?=$bg?>">
        <td class="num">
            <?
            if ($list[$i][is_notice]) // 공지사항
                echo "<img src='$board_skin_path/img/icon_notice.gif' align='absmiddle' border='0'>";
            else if ($wr_id == $list[$i][wr_id]) // 현재위치
                echo "<span class='current'>{$list[$i][num]}</span>";
            else if ($list[$i][is_reply]) // 답글이라면 *앵무
                $ni = $ni + 1;
            else
                $list[$i][num] = $list[$i][num] - $ni;
                echo $list[$i][num];
            ?>
        </td>
전체 66,558 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT