0

SimplePieを拡張して、フィードを逆の順序で並べ替えようとしています。変数$eventsで区別した2番目のフィードは、最初に「最も古い」日付で表示したいイベントのフィードです。これは、そのイベントが発生に最も近いためです。

SimplePieのドキュメントSimplePieCustom Sortを使用して、これを実現するためのこれらのコード行を作成してきました。

class SimplePie_Custom_Sort extends SimplePie {

    function sort_items($a, $b) {

         return $a->get_date('U') >= $b->get_date('U');
    }

}

ただし、機能していないようです。上記のドキュメントからコードを直接コピーして貼り付け、文字列の長さでフィードを並べ替えようとしましたが、それも機能しません。

simplepie.incファイルに直接アクセスして、そこで並べ替え関数を編集すると、両方のフィードを逆の順序で表示できます。これらすべての理由から、Simple_Pie_Custom_Sortを使用して関数を拡張しようとしている方法にエラーがあると思います。あるいは、SimplePieができることをやろうとしているのかもしれません。

simplepie.incファイルの新しいコピーをアップロードするところまで行ったのですが、ある時点で誤って保存してしまったのではないかと思いました。

おそらくどこかでばかげたエラーがあるような気がします。誰かが提供できることをいただければ幸いです。私が使用しているコードブロック全体は以下のとおりです。ありがとう。

<?php

//TURN OF ERROR REPORTING
//error_reporting(0);

//INCLUDE SIMPLEPIE (PULLS RSS FEED)
require_once("inc/simplepie.inc");

// Extend the SimplePie class and override the existing sort_items() function with our own.
class SimplePie_Custom_Sort extends SimplePie {

    function sort_items($a, $b)
{
    return $a->get_date('U') >= $b->get_date('U');
}

}

//NEW SIMPLEPIE
$news = new SimplePie();

//SET LOCATIONS OF FEEDS
$news->set_feed_url(array(
     'http://rss-feed-url-example.rss'
));


//SET UP CACHING
$news->enable_cache(false);
//$news->set_cache_location('cache');
//$news->set_cache_duration(1800);

//START THE PROCESS
$news->init();

//HANDLE FEED TYPE
$news->handle_content_type();





//NEW SIMPLEPIE USING CUSTOM SORTING
$events = new SimplePie_Custom_Sort();

//SET LOCATIONS OF FEEDS
$events->set_feed_url(array(
     'http://rss-feed-url-example.rss'
));

//ANOTHER POSSIBLE NEED FOR SORTING RSS DIFFERENTLY
$events->enable_order_by_date(false);

//SET UP CACHING
$events->enable_cache(false);
//$events->set_cache_location('cache');
//$events->set_cache_duration(1800);

//START THE PROCESS
$events->init();

//HANDLE FEED TYPE
$events->handle_content_type();

?>
4

2 に答える 2

0

あなたが持っている

$events->enable_order_by_date(false);

これにより、並べ替えが完全に無効になり、アイテムが並べ替えられなくなります。(これは悪い名前のメソッドです。)

于 2012-06-15T00:10:29.053 に答える
0

私は問題が何であるかを理解しました。SimplePieは、単一のフィードが配列に含まれていることを気に入らなかった。

私はこれを変更しました...

//SET LOCATIONS OF FEEDS
$events->set_feed_url(array(
   'http://rss-feed-url-example.rss'
));

これに...

//SET LOCATIONS OF FEEDS
$events->set_feed_url('http://www.coloradotechnology.org/resource/rss/events.rss');

これが問題を引き起こしている理由を誰かが詳しく説明できるなら、もっと良い説明を聞きたいです。

于 2012-06-19T19:51:42.443 に答える