Joomla!の標準ではフロントページ指定をしたコンテンツしかRSSフィードに出力しないようである。管理画面を眺めても特に設定ができるようには見えないので、またソースを眺めてみました。プログラムは、/componetes/com_rss.phpです。
# vi components/com_rss/rss.php
// query of frontpage content items
$query = "SELECT a.*, u.name AS author, u.usertype,
UNIX_TIMESTAMP( a.created ) AS created_ts, cat.title AS cat_title,
sec.title AS section_title"
. "\n FROM #__content AS a"
. "\n INNER JOIN #__content_frontpage AS f ON f.content_id = a.id"
. "\n LEFT JOIN #__users AS u ON u.id = a.created_by"
. "\n LEFT JOIN #__categories AS cat ON cat.id = a.catid"
. "\n LEFT JOIN #__sections AS sec ON sec.id = a.sectionid"
. "\n WHERE a.state = 1"
. "\n AND cat.published = 1"
. "\n AND sec.published = 1"
. "\n AND a.access = 0"
. "\n AND cat.access = 0"
. "\n AND sec.access = 0"
. "\n AND ( a.publish_up = '$nullDate' OR a.publish_up <= '$now' )"
. "\n AND ( a.publish_down = '$nullDate' OR a.publish_down >= '$now' )"
. "\n ORDER BY $orderby"
やはり、固定的にフロントページ指定したコンテンツのみを対象としている記述があり。
RSSフィードを出力するのにデータベースを検索していますが、「INNER JOIN」でフロントページに表示しているコンテンツIDのみを対象としている記述あり。(235行目)
ここをコメントに...。
// . "\n INNER JOIN #__content_frontpage AS f ON f.content_id = a.id"
これで簡単に出るかなと思って実行されると、RSSフィードが全く表示されなくなった。
よく調べてみると、SQLエラーが発生しておりました。
「INNER JOIN」を外しただけでエラーが出ているとなると、他でもINNER
JOINしたファイル「f」が使われていないか調べると、このSQL文の直前の「case文」で、ファイル「f」の記述があるのでこれもコメント(222
行目~224行目、227行目)
// case 'front':
// $orderby = 'f.ordering';
// break;
default:
// $orderby = 'f.ordering';
break;
ソートをかける部分「order by」で使われているみたいなので、「default」部は、作成日の新しいもの順とした。
// $orderby = 'f.ordering';
$orderby = 'a.created DESC'; ←追加
break;
これでサイト全体で作成日の新しいものから順にRSSフィードが出力されるはずである。
|