Home arrow Joomla!でサイト管理 arrow オリジナルHPを作る arrow [Joomla! オリジナルHPを作る]フロントページ以外のRSSフィードを出力する
[Joomla! オリジナルHPを作る]フロントページ以外のRSSフィードを出力する プリント

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フィードが出力されるはずである。