Aggregator 모듈에 관한 필수 튜닝 4탄 - Feed 블럭!

Aggregator 모듈에 관한 필수 튜닝 4탄 - Feed 블럭!

"Aggregator 모듈에 관한 필수 튜닝 3가지"(아래 관련글을 확인 바람)에 이어서, Aggregator 모듈로 입수한 피이드 아이템 내용들을 블럭으로 출력하는 법을 알아보자.

기본적으로는 관리 > 사이트 구성 > 블럭에 가 보면,
각각의 피이드별로 이미 블럭이 구성돼 있다(이거 나중에는 그 많은 갯수 때문에 귀찮다).
하지만 이 자동생성 블럭들의 최대단점은, 하나의 피이드를 기준으로 생성돼 있기 때문에, 시간별로 최신의 블로그 피이드 아이템을 섞어서 가지고 오는 경우에는 적용 불가다.

그래서,
아래와 같이 2가지 트릭으로 최근 피이드 아이템들을 묶어서 가지고 오는 팁이 있다. 이 소스들은 드루팔의 PHP Snippet (http://drupal.org/node/21867) 등으로부터 가지고 온 것으로, 기초적인 PHP 코딩지식이 있는 분들은 곧바로 블럭 추가를 통해 "최근의 피이드 아이템 블럭"의 구현이 가능하겠다. 참고로 2번째 방법이 더 확실하다!

1. module_invoke 를 이용한 방법 (Drupal 5.1 OK, 5.7 NG)

    $strMaxFeedNo = "10";
    $block = module_invoke('aggregator', 'block', 'views_range', 'feed-'.$strMaxFeedNo);
    print $block['content'];

이 방법은 5.1에서는 잘 됐으나, 5.7로 업그레이드하고 나니 작동이 안됐다. 아마도 그 중간버전에서부터 맛이 간 듯.
그리고 죄송하게도 아직 module_invoke 의 내부 동작방식을 확인치 못해 설명이 부족하다. 양해를 부탁...
$strMaxFeedNo는 현재 등록된 피이드 채널의 최대 갯수이다. 

 

2. db_query 를 이용한 방법

// Last update: May 7 2006, 참고 - http://drupal.org/node/31502
$result = db_query("SELECT a.title, a.fid, a.link  FROM {aggregator_item} a ORDER BY a.iid desc limit 12");
$output = '<div style="padding-left:17px">';
while ($feed = db_fetch_object($result)) {
    $output .= '<li>' . l(mb_strcut($feed->title, 0, 80), "aggregator/sources/".$feed->fid) . '</li>';
}
$output .= '</div>';
$output .= '<p><a href="?q=aggregator/sources">더 보기</a></p>';
return $output;

조금 체계성은 부족하나, 커스터마이징이 너무 쉽다.
그 옛날 제로보드*에서 최신글 부분을 직접 손보는 느낌이다(ㅎㅎ).
출력할 피이드 아이템의 갯수를 조정하고 싶다면 중간에 있는 12를 변수화하던가 바꾸면 된다. 귀차니즘으로 몰상식한 코딩을 해 버렸다. 이것 또한 양해를...

참고로, aggregator의 특정 카테고리에 있는 최신글만 3개씩 가지고 오고 싶다면 아래의 쿼리로 대체하면 된다.

SELECT a.title, a.fid, a.link  FROM aggregator_category_feed c left join  aggregator_item a on c.fid=a.fid and c.cid=1 ORDER BY a.iid desc limit 3

 
c.cid=1 부분에 있는 숫자가 카테고리 번호이다.

 

댓글

위 모듈에 관한 영문

위 모듈에 관한 영문 팁 모음입니다.
http://drupal.org/handbook/modules/aggregator