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

121312.png

자신의 블로그에 올리고자 하는 포스트가 다른곳에서 퍼오거나 개인목적의 포스트라면 XML에 까지 포함시키기가 꺼림직 할 것이다. 그래서 델버님의 '글을 XML에 포함 안시키기'팁을 적용하여 사용하였지만, 공개+싱크 예약을 할경우 RSS업데이트는 항상 수동으로 해주어야 한다는 불편함이 있어 예약에서 '공개+싱크'로 작성 할 경우 + RSS까지 되도록 만들어 보았다.

좌측에 있는 그림은 본인의 태터 포스트 입력창이다. 여러가지 기능이 애드온 되어 있으므로 등록예약 항목만 참고하기 바란다.

이 기능을 에드온 하려면 첫번째로 델버님의 글을 XML에 포함 안시키기가 적용되어 있어야 한다. 그리고 다음의 코드를 추가해 보자.
편집할 파일은 inc_function.php, article_edit.php 두개이다.
※ 백업필수

article_edit.php 250열 부근에 아래의 코드를 찾는다.(article_edit.php 수정은 하지 않아도 무방함)

<td><input type="radio" value="0" name="subscription">수동으로 처리  /  생성시각에 <input type="radio" value="1" name="subscription">공개 <input type="radio" value="2" name="subscription">공개+싱크</td>

이것을 아래처럼 수정한다.

<td><input type="radio" value="0" name="subscription">수동  /  예약 <input type="radio" value="1" name="subscription">공개 <input type="radio" value="2" name="subscription">공개+싱크+RSS</td> <!-- 공개+싱크+RSS 예약 추가 -->

inc_function.php1500열 부근에 function set_article_sync에서 아래의 코드를 찾는다.

if ($mode && !$is_public) $add_query = " , is_public = '1'";

그 아래 줄에 다음처럼 추가해 준다.

if ($mode && !$is_public) $add_query = " , is_public = '1' and perm_xml = '1'"; // 공개+싱크+RSS 예약 추가

이상이다. 소스가 난해하여 각종 버그가 일어날 소지가 다분하다. 버그리포트는 이곳에 남겨주기 바란다.

※ 예약 이벤트 발생시 Warning: Missing argument 4 for set_article_xml() in... 에러가 뜹니다. 에러가 한번 뜨고 난 이후에는 정상적으로 작동 하지만 껄끄럽군요. 버그를 잡아 보도록 하겠습니다.

※ 싱크를 하면 RSS에 추가되고 퍼블릭만하면 RSS에 추가되지 않도록 변경하였다.

Comments

경기도 파주에 있는 예술인 마을 헤이리로 회사에서 건축물 견학을 갔다. 정말 작고 특이한 건물과 구조물들이 많았다. 한겨울의 출사여서 그런지 투박하기 그지 없지만, 그런대로 봐줄만 하다. 촬영에 사용된 카메라는 '올림푸스 카메디아C-8080wz'이다.

관련 홈페이지 : http://www.heyri.net
※ 위 홈페이지를 방문하면 헤이리에서 일어나는 각종 행사일정 및 쿠폰을 얻을 수 있다.

1-143847.jpg
2-554473.jpg
3-938469.jpg
4-999009.jpg
5-186685.jpg
6-821336.jpg
7-118673.jpg
8-487174.jpg
9-144861.jpg
10-167986.jpg
11-533191.jpg
12-466715.jpg
13-091218.jpg
14-354383.jpg
15-789824.jpg
16-707204.jpg
17-693609.jpg

Comments