Rev. 2.73

요즈음 태터툴즈에 골빈해커님의 랜덤포스트목록을 추가하는것이 유행인듯 하다. 본인도 넣어보려 했지만 워낙 꿀꿀한(?) 포스트들이 많아 꺼려오고 있던중 최근 지정기간내에 리플과 트랙백 카운트 통계를 이용한 인기포스트 목록을 넣어보는 것도 좋겠다 싶어 만들어 보았다.(뭐 그리 인기 많은글이 있지도 않지만...)

1123123.jpg

위 그림과 같이 블로그 최상단에 지정기간동안의 인기있는글이 표시된다. 기본바탕이 된 소스는 사탕발가락님의 플러그인 일부를 가공하여 사용 하였다.

편집할 파일은 inc_function.php, inc_presswork.php, index.php, skin.html 이다.
(※ 백업필수)

index.php
아래부분에서 다음과 같은 열을 찾는다.

if (strpos($d1, "[ ##_s_link_rep_##]")) $d1 = str_replace("[ ##_s_link_rep_##]", get_link_rep(), $d1);

아래줄에 다음과 같이 한줄 추가한다.

if (strpos($d1, "[ ##_s_link_rep_##]")) $d1 = str_replace("[ ##_s_link_rep_##]", get_link_rep(), $d1);
if (strpos($d1, "[ ##_s_popular_rep_##]")) $d1 = str_replace("[ ##_s_popular_rep_##]", get_popular_rep(), $d1); //인기글 리스트

inc_function.php
다음 코드를 검색한다.

var $s_link_rep;

아래줄에 다음과 같이 한줄 추가한다.

var $s_link_rep;
var $s_popular_rep;  //인기글 리스트

다음 코드를 검색한다.

list($sval, $this->s_link_rep) = cut_skintag($sval, "s_link_rep");

아래줄에 다음과 같이 한줄 추가한다.

list($sval, $this->s_link_rep) = cut_skintag($sval, "s_link_rep");
list($sval, $this->s_popular_rep) = cut_skintag($sval, "s_popular_rep");//인기글 리스트

inc_presswork.php
최하단 ?>전에 아래의 function을 추가해준다.

//인기글 리스트
	function get_popular_rep() { 
        global $db, $dbid; 
        unset($p); 

        $trunc = 24;  //최대 글의 크기 
        $comment_cnt = 5; //목록에 보여질 글 수 
        $sql = " 
        select 
            no, title, regdate,    category1, category2, rp_cnt + tb_cnt*1 as point 
        from 
            t3_".$dbid." 
        where is_public    = '1' 
        and    from_unixtime( regdate,     '%Y%m%d%T'     ) >= DATE_FORMAT(DATE_ADD(NOW(), interval -1 month), '%Y%m%d%T') 
        order by 
            point desc,    regdate    asc 
        limit 0, $comment_cnt 
        "; 
        $result = @mysql_query($sql); 

        while(list($no, $title, $regdate, $category1, $category2, $rp_cnt) = @mysql_fetch_array($result)) { 
            $p_rep = $GLOBALS["skin"]->s_popular_rep; 
            $p_rep = str_replace("[ ##_popular_rep_link_##]", "index.php?pl=$no", $p_rep); 
            $p_rep = str_replace("[ ##_popular_rep_title_##]", str_cut($title,$trunc,0), $p_rep); 

            $category = get_category1_label($category1); 
            if ($category2) $category .= " - ".get_category2_label($category2); 
            $p_rep = str_replace("[ ##_popular_rep_category_##]", $category, $p_rep); 

            if($rp_cnt>0) 
            $rp_cnt ="(".$rp_cnt.")"; 
            else 
            $rp_cnt = ""; 
            $p_rep = str_replace("[ ##_popular_rep_reply_##]", $rp_cnt, $p_rep); 
            $p_rep = str_replace("[ ##_popular_rep_date_##]", get_timevalue0($regdate, 2), $p_rep); 
            $p .= $p_rep; 
            } 
    return $p; 
    } 

여기에서 DATE_FORMAT(DATE_ADD(NOW(), interval -1 month) 이 부분에서 month를 day로 바꾸면 날짜단위로 범위를 지정할 수 있다. 그리고 $trunc에는 최대 글자수의 크기, $comment_cnt는 목록을 몇개나 출력할 것인지 정해줄 수 있다.

skin.html
아래 치환자를 스킨의 적절한 위치에 적용하면 된다.(아래 코드의 [와 ##_사이에 있는 공백은 지워야 한다.)

< s_popular_rep>
[ ##_popular_rep_link_##] : 링크 치환자
[ ##_popular_rep_title_##] : 제목 치환자
[ ##_popular_rep_reply_##] : 트랙백 + 답변 합산 수 치환자
[ ##_popular_rep_date_##] : 날짜 치환자
[ ##_popular_rep_category_##] : 해당글의 카테고리
< /s_popular_rep>

본인 블로그 스킨 적용 예

	<!--최근 인기있는 글목록-->
	<div class='subject'><font color='#990000'><strong>Popular Posted</strong></font></div>
	<div class='blackline'><br></div>
	최근 한달간 인기있 글의 목록입니다.
	<div class='comment_line'></div>
	<table width="100%"  border="0" cellspacing="0" cellpadding="0" class='comment_memo'>
	<s_popular_rep>
		<tr><td width="225" nowrap><strong>ㆍ</strong> [ ##_popular_rep_date_##] <a href="[ ##_popular_rep_link_##]">[ ##_popular_rep_title_##]</a> [ ##_popular_rep_reply_##]</td><td>:: </td></tr>
	</s_popular_rep>
	</table>
	<div class='comment_line'></div>
	<p>

※ [ 과 ## 사이의 공백이 있는 곳은 꼭 붙여 주어야 한다.
※ 카테고리도 출력되도록 변경하였다.
※ 스킨예제를 테이블 구조로 변경하였다.

버그리포트는 이곳에 남겨주기 바란다.

Comments

Got something to add? You can just leave a comment.

  • 안녕하세요 ^^
    블로그 잘 보구 있습니다
    php 에러가 나서 그러는데 한번 봐주실래요

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/jeonhk77/public_html/tt/inc_function.php on line 514

    왜 그런건지 ??? 몇번을 해봐두 마찬가지여서 이렇게 글 남기네요

    reply edit

  • 체크해 보겠습니다.

    reply edit

  • inc_presswork.php에 오자가 있었습니다.
    수정된 코드로 고쳤습니다. 이 부분만 다시 수정해 주세요. 성공을 빕니다. ^^

    reply edit

  • HK HK

    수정해 보았는데 이런 오류메세지와 아예 페이지가 안뜨네요 -_-;;

    Fatal error: Cannot redeclare get_popular_rep() (previously declared in /home/jeonhk77/public_html/tt/inc_presswork.php:490) in /home/jeonhk77/public_html/tt/inc_presswork.php on line 529

    reply edit

  • 094 태터를 다른계정에 설치하여, 위 방법대로 다시 시도 하였습니다만,
    잘 작동 되는데요? 차근차근 다시 시도해 보세요.

    reply edit

  • HK HK

    --;; 이론 바보같이 제가 소스를 두번 부쳐넣는 오류를 ... 아침에 출근하면서 정신없이 해대서 신경쓰이게 해서 죄송합니다 수정했구여 아주 잘 됩니다 ^^이제
    고마워요 파이어준님

    reply edit

  • 성공 하셨다니 축하드립니다. ^^

    reply edit

  • HK HK

    위에 인덱스 부분 소스 수정해주세여 -_-;; 내용이 출력됐다는 쿨럭~

    reply edit

  • 허걱!! 계속 업데이트 하다보니 소스 바꾸는것도 잊었군요.
    알려주셔서 감사합니다. ^^

    reply edit

  • 저도 사용중이랍니다.. 잇힝^^*

    reply edit

  • 뭘하든.. 제 스킨에 안 어울리네요... ㅠ.ㅠ. 이것저것 다 해봤는데... 갤러리는 직접 만들어 봤지만.. 어울리지가;;;

    reply edit

  • 그렇죠 이미지 섣불리 사용하면 디자인 다 망가지죠...
    그래서 전 섬네일이미지 자동생성이 아니라 수동생성으로 해놓고 사용중이랍니다.
    배포목적의 스킨과 리뉴얼목적의 스킨을 따로만들어야 할것 같아요 ^^

    reply edit

  • 유용한 자료 감사히 잘 쓰겠습니다..^^ 좋은 하루 보내세요

    reply edit

  • 좋은 하루 되세요. ^^

    reply edit

  • 최근 지정기간동안의 인기글목록 달기

Your Reaction Time!

captcha

avatar