2012-06-13 2 views
0

Я пытаюсь расширить SimplePie для сортировки фида в обратном порядке. Второй канал, который я выделил с переменной $ events, - это фид событий, которые я хотел бы отображать с «самой старой» датой сначала, поскольку это событие ближе всего к происходящему.Не удается получить функцию SimplePie для расширения с классом

Я использую док SimplePie в Simple Pie Custom 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(); 

?> 
+0

Что вы получаете, сообщения об ошибках, а также какую версию PHP вы используете? Если вы получаете устаревшие ссылочные ошибки, вы можете исправить это, удалив все = & и заменив их на = в simplepie.inc. – rncrtr

+0

PHP Version 5.2.17. Я не получаю никаких ошибок, это странная часть. Насколько я могу судить, он должен работать. Я попытаюсь заменить = &. Я прокомментировал Facebook. Думаю, я должен был прокомментировать здесь. –

+0

Я только что проверил тест на совместимость SimplePie. Все проверено там. –

ответ

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'); 

Если кто-нибудь может уточнить, почему это вызывает проблемы, я хотел бы услышать лучшее объяснение.

+0

Возможно, внутри SimplePie создает экземпляр с несколькими каналами, поскольку вы передали массив. И тогда все плохо работает. – hakre

0

Вы

$events->enable_order_by_date(false); 

Это полностью отключает сортировку, в результате чего ваши детали не должны быть отсортированы. (Это плохо названный метод.)

+0

Ryan, Спасибо за совет. Я удалил эту строку кода, и я все еще не получаю результат, который я ищу. Я верю, что ты прав, и эта линия вызывает у меня горе. Я собираюсь продолжить работу над выяснением проблемы. –

Смежные вопросы