1

주제: rss feed 출력시

오류라고만 생각해서 한참 헤맸는데, 알고보니 버그네요ㆀ

배포본에서는 blog/rss/index.php 이고, 개발본에서는 lib/model/rss.php 에 해당합니다.
refreshRSS() 의 문제입니다.

1.0.5 부터 추가된 기능중, 발행 상태인 글만 RSS 로 내보내는 옵션이 있지요.
이 정보를 담고 있는 변수가 $blog['publishEolinSyncOnRSS'] 인데,
이것이 0 (false) 라는 것은 공개 상태인 글도 포함하여 출력하고 1 일때 발행 상태인 글만 출력해야 정상입니다.

function refreshRSS() 아래로 10번째 줄부터 다음과 같이 되어있습니다:
if($blog['publishEolinSyncOnRSS']) {
$result = mysql_query("SELECT e.*, c.name AS categoryName FROM {$database['prefix']}Entries e LEFT JOIN {$database['prefix']}Categories c ON e.owner = c.owner AND e.category = c.id WHERE e.owner = $owner AND e.draft = 0 AND e.visibility >= 2 AND e.category >= 0 ORDER BY e.published DESC LIMIT {$blog['entriesOnRSS']}");
} else {
$result = mysql_query("SELECT e.*, c.name AS categoryName FROM {$database['prefix']}Entries e LEFT JOIN {$database['prefix']}Categories c ON e.owner = c.owner AND e.category = c.id WHERE e.owner = $owner AND e.draft = 0 AND e.visibility = 3 AND e.category >= 0 ORDER BY e.published DESC LIMIT {$blog['entriesOnRSS']}");
}

문제점, 찾으셨나요?

이 구문대로라면 $blog['publishEolinSyncOnRSS'] 가 true(1) 일때 공개 상태 이상(visibility >= 2) 인 글을 발행하고, false(0) 일때 발행상태 (visiblity =3)인 글만 반환합니다. 실제로는 이 반대가 되어야 맞겠지요. 때문에 if($blog['publishEolinSyncOnRSS']) 를 if(!$blog['publishEolinSyncOnRSS']) 또는 if($blog['publishEolinSyncOnRSS'] == 0) 으로 바꾸어 주어야 정상적으로 동작합니다.

laziel (2006-05-14 01:15:05)에 의해 마지막으로 수정

2

답글: rss feed 출력시

laziel 님 대단하세요 ^^
해결하신것 축하드립니다. smile

1.0.6 에서는 수정해서 내보낼 수 있겠네용 wink

3

답글: rss feed 출력시

음... 제 사이트 RSS를 눌러본 적이 없어서(본인 스스로 피드백 주소를 사용할 일이 없으니...) 지금 이 글을 보고 눌러보니... 에러가 뜨더군요.

XML Parsing Error: no element found
Location: http://.............../blog/rss
Line Number 1, Column 1:

cache 폴더의 1.xml 파일을 보니 중간에 description에서 출력이 딱 멈춰 있던데... laziel님이 알려주신 방법으로 고쳐보니 파일이 완결되기는 하는데... 중간의 내용이 비어서 그냥 껍데기 파일만 출력되는군요. 음... 제 문제는 전혀 새로운 버그인 것일까요?

graphittie (2006-05-14 01:51:13)에 의해 마지막으로 수정

4

답글: rss feed 출력시

그래피티님// 1.xml 파일 내용을 올려주시면 파악하는데 좀 더 도움이 되겠지요 ' ㅅ')/

5

답글: rss feed 출력시

1.xml은 빈 파일이라 브라우져에 출력된 내용을 저장했습니다.

rss.rar

상황은,

cache/rss/1.xml을 삭제하고 http://www.beyondours.com/blog/rss을 실행하면 파일의 내용이 브라우져에 출력됩니다.
이 상태에서 cache/rss 안에는 1.xml이 새로 생성되어 있고 내용은 비어 있습니다.
이 1.xml을 지우지 않고 rss 링크를 다시 실행하면 위에 적은 것과 같은 메세지가 출력됩니다.

graphittie (2006-05-14 15:01:44)에 의해 마지막으로 수정

6

답글: rss feed 출력시

상황을 봐서는 php 레벨에서의 어떤 오류가 있지 않나 싶습니다.
이렇게만 봐서는 잘 모르겠네요ㆀ

7

답글: rss feed 출력시

지금 하고 있는 관리자 화면 XHTML 전환이 일단락 되면 소스를 살펴보고 결과를 올리도록 하겠습니다.