XpressEngine에서는 기본적으로 RSS 기능을 제공합니다. 기본으로 제공하는 이 RSS 기능은 XE로 운영하는 사이트 전체에 대한 RSS나 특정 모듈에 대한 글 목록만을 RSS로 만들 수 있도록 되어 있습니다.

하지만, 사용자가 임의로 원하는 글의 목록에 대한 RSS를 제공하는 방법이 없는 것은 아닙니다. 의외로 아주 쉽게 이런 RSS를 제공할 수 있도록 되어 있습니다. zero님께서 RSS 모듈을 설계하시면서 이런 점들을 고려해서 설계해놓았다는 것을 소스를 보면 아실 겁니다.

간단한 예를 들어보자면 대략 아래와 같습니다.

function dispMyModuleHotRss() {

    // 원하는 글의 목록을 뽑는다.
    // 뽑아온 글 목록은 $document_list 배열에 저장한다.
    ....

    // RSS 모듈의 view 객체를 생성하고,
    // rss() 함수를 통해 $document_list 의 글 목록을 RSS 형식으로 만든다.
    $rss_title = '인기 글';
    $rss_descript = '지난 일주일 동안 인기 있는 글의 목록입니다.';

    $oRssView = &getView('rss');
    $oRssView->rss($document_list, $rss_title, $rss_descript);

    // RSS를 뿌려주기 위해 출력 템플릿 파일을 설정한다.
    Context::set('layout', 'none');
    $this->setTemplatePath('./modules/rss/tpl/');
    $this->setTemplateFile('display');
}

위 예제는 MyModule 이라는 모듈을 만들면서 이 모듈에서 게시판에서 인기 있는 글의 목록을 RSS로 제공하기 위한 함수입니다. 우선 필요한 글의 목록을 적절하게 뽑아온 다음에 이를 $document_list 라는 배열에 저장합니다. 물론 이 때 $document_list 라는 이름을 사용하지 않아도 괜찮습니다.

글 목록이 만들어지면 이를 RSS 모듈의 rss() 함수를 통해 RSS 형태로 만들어줍니다. rss() 함수의 매개변수는 글 목록의 배열($document_list)과 RSS 제목($rss_title), RSS 설명($rss_descript) 입니다.

완전한 형태의 rss() 함수 원형은 다음과 같습니다.

function rss($document_list = null, $rss_title = null, $add_description = null)

이렇게 매개변수를 채워 rss() 함수를 호출하면 rss() 함수 내부에서 적절한 HTTP 헤더 처리 등을 해주기 때문에 그다지 신경 쓸 것은 없습니다. 다만, 이를 제대로 출력하기 위해서는 반드시 출력 템플릿 파일을 설정해줘야 합니다.

rss() 함수 내부적으로 출력 템플릿을 설정하기는 하지만, 이것은 RSS 모듈을 위한 것이지 지금 만들고 있는 MyModule에 대한 것은 아니기 때문에 이를 해주지 않으면 제대로 출력이 되지 않습니다.

이렇게 해서 우리가 원하는 어떤 형태의 글 목록이든지 RSS로 출력할 수 있습니다. 댓글 목록이나 트랙백 목록 등도 이를 통해 해결할 수 있습니다. 우리가 적절한 형태의 글 목록($document_list)만 넘겨준다면 말이지요.