태터툴즈 고쳐쓰기 #3 - 방명록 최근글 보여주기

Trackback to :: 태터 툴즈 방명록 최신글 보여주기

안그래도 최근방명록 리스트를 뽑아오게 고쳐보고 싶었는데 PYS님이 멋지게 만들어주셨다. 다만 DB를 수정해야하는게 찝찝해서 최소한의 수정으로만 돌아가게 가지를 좀 쳤다. (무단으로 수정하게 돼서 정말 죄송합니다;;)

1. inc_presswork.php 파일에 아래의 함수를 추가
function get_rctgt_rep() {
    global $db, $dbid;
    unset($p);

    $p_rct_gt_cnt = 5;     // 몇개까지 표시할지 결정
    $p_rct_gt_trunc = 30;  // 길이를 몇바이트에서 자를지 결정

    $sql = "select no, name, body, regdate from t3_".$dbid."_guest order by regdate desc limit 0, $p_rct_gt_cnt";
    // print $sql;
    $result = @mysql_query($sql);
    while(list($no, $name, $body, $regdate) = @mysql_fetch_array($result)) {

        // 방명록 리플갯수를 표시하지 않으려면 아래 두줄을 삭제 하세요
        list($rp_cnt) = @mysql_fetch_array(@mysql_query("select count(no) from t3_".$dbid."_guest_reply where pno=$no"));
        $rp_cnt = $rp_cnt==0 ? "" : "<font face=\"Tahoma\" size=\"1\">($rp_cnt)</font>";

        $p_rep = $GLOBALS["skin"]->s_rctgt_rep;
        $p_rep = str_replace("[##_rctgt_rep_link_##]", "index.php?md=guest#gue" . $no, $p_rep);
        $p_rep = str_replace("[##_rctgt_rep_body_##]", str_cut($body, $p_rct_gt_trunc, 0).$rp_cnt, $p_rep);
        $p_rep = str_replace("[##_rctgt_rep_name_##]", $name, $p_rep);
        $p_rep = str_replace("[##_rctgt_rep_time_##]", get_timevalue0($regdate, 2), $p_rep);
        $p .= $p_rep;
    }
    return $p;
}

2. inc_function.php 파일 120번째줄에 아래의 코드를 삽입한다. (정확한 위치를 모르면 비슷하게 생긴 코드들 사이에 추가하면 됨)
list($sval, $this->s_rctgt_rep) = cut_skintag($sval, "s_rctgt_rep");

3. index.php 파일 547번째줄 근처로 가서 아래의 코드를 삽입한다 (역시 비슷하게 생긴놈들 사이에 끼워넣기)
if (strpos($d1, "[##_s_rctgt_rep_##]")) $d1 = str_replace("[##_s_rctgt_rep_##]", get_rctgt_rep(), $d1);

4. 마지막으로 스킨파일을 수정한다. 096_quan 스킨을 예로 들면 이렇게 수정한다
<div class="h3"><img src="./images/left.gif" align="absmiddle"> 최근에 달린 방명록</div>
<div style="padding:0 0 0 20"><s_rctgt_rep><a href="[##_rctgt_rep_link_##]">[##_rctgt_rep_body_##]</a><div class="rp_rep">[##_rctgt_rep_time_##] - [##_rctgt_rep_name_##]</div></s_rctgt_rep>
</div>

이렇게 하면 작업 끝. PYS님의 소스에서는 태터툴즈에서 직접 지원하는 것처럼 환경설정에서 표시갯수, 표시길이 등을 수정할 수 있지만 이건 get_rctgt_rep() 함수 내에서 직접 적어줘야 한다. 소스 수정해놨다가 나중에 태터에서 공식 지원해버리면 허무할 것 같아서 이런 짓을..

소스를 만들어주신 PYS님께 다시한번 감사를!!