주제: 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)에 의해 마지막으로 수정