web-dev-qa-db-ja.com

Fetch_feedを使ったRSSフィードとソートの組み合わせ

私は5つの異なるフィードから最新の10の投稿をまとめて1つのリストにまとめようとしています。フィードを組み合わせる方法を見つけましたが、それらを10個に制限して日付順にソートすることはできませんでした。

誰かが私を正しい方向に向けることができますか?ありがとうございます。

<ul>
<?php $rsslist = array(
'http://www.nrel.gov/news/press/rss/rss.xml',
'http://www.pewenvironment.org/rss/campaigns-8589935316',
'http://www.ashrae.org/RssFeeds/ashrae.xml',
'http://www.districtenergy.org/blog/category/idea-activity/feed/',
'http://www.districtenergy.org/blog/category/industry-news/feed/'
 );

$feedlist = array();
foreach ( $rsslist as $rssurl ) $feedlist []= fetch_feed( $rssurl ); /* store in feed array for later access */

$current_item_cycle = 0;
while ( sizeof($feedlist) ) { /* while feedlist is not empty */ 

    foreach ( $feedlist as $index => $feed ) { /* cycle through each feed */

        if (!$item = $feed->get_item($current_item_cycle++)) unset($feedlist[$index]); /* if feed has not more items unset */

        else /* echo it out */ { ?>
            <li>
            <?php echo $item->get_date('j F Y | g:i a') . $item->get_permalink(); ?>
            </li>
        <?php }
    }
} ?>
</ul>
1
Tim Bowen

このコードはうまくいくはずです。私はあなたのフィードの1つをコメントアウトしました。コメントを外すと、正しくソートされなくなります。何か問題があるようです。他のブラウザと同じようにブラウザで正しくフォーマットされません。

<ul>
<?php 
$rsslist = array(
    #'http://www.pewenvironment.org/rss/campaigns-8589935316',
    'http://www.ashrae.org/RssFeeds/ashrae.xml',
    'http://www.districtenergy.org/blog/category/idea-activity/feed/',
    'http://www.districtenergy.org/blog/category/industry-news/feed/',
    'http://www.nrel.gov/news/press/rss/rss.xml'
);

// Fetch all of the feeds into a simplePie mashup
$rss = fetch_feed($rsslist);
// Set the max items to either 10 or all items if there are less than 10
$maxitems = $rss->get_item_quantity(10);

// Get the items (0-10)
$rss_items = $rss->get_items(0, $maxitems); 

// If there are no items, output that
if ($maxitems == 0) {
    echo '<li>No items.</li>';
// Otherwise loop over the items
} else {
    foreach ( $rss_items as $item ) { ?>
        <li>
        <?php echo $item->get_date() . $item->get_permalink(); ?>
        </li>
    <?php 
    }
}
?>
</ul>
1
Jake