RSS Displayer showing Google calendar events in wrong order

I'm using an RSS Displayer to show upcoming events through a Google calendar feed, but I cannot get them to display in the correct order. Events are sorted based on when they were last edited, not on start time. I added the
query parameter (see ), but it has no effect.
(or descending) also does not work. The strange thing is that
DOES take effect (shows only upcoming events).

I know my feed URL is valid, because if I paste it in a browser, all 3 query parameters work as they should. So it appears the problem may be on the Concrete5 side, like it is simply ignoring certain query parameters but accepting others.

Any help with this issue will be greatly appreciated.


View Replies:
A3020 replied on at Permalink Reply
I've had a similar issue once. I remember that I took a look at /libraries/3rdparty/simplepie.php.

Also check /core/helpers/feed.php. As you can see, the load() method returns a SimplePie object, so you are able to override your rss_displayer controller and edit the view() method so it will sort correctly. (see below)

defined('C5_EXECUTE') or die("Access Denied.");
class RssDisplayerBlockController extends Concrete5_Controller_Block_RssDisplayer {
   public function view(){ 
      $fp = Loader::helper("feed");         
      $feed = $fp->load($this->url); 
      $feed->set_item_limit( intval($this->itemsToDisplay) );
         Do some sorting here
         Check /libraries/3rdparty/simplepie.php for available methods
      $posts = $feed->get_items();
      if( $feed->error() )
webmaster55 replied on at Permalink Reply
Thank you! That did the trick. For those having the same issue, I added $feed->enable_order_by_date(false) in the view() function in my rss_displayer controller (see below).

function view(){ 
   $fp = Loader::helper("feed");         
   $feed = $fp->load($this->url); 
   $feed->set_item_limit( intval($this->itemsToDisplay) );
   // Add this one line:   
   $posts = $feed->get_items();
   if( $feed->error() )
      $this->set('errorMsg', t("Oops, it looks like you've entered an invalid feed address!") );
   $this->set('posts', $posts);
   $this->set('title', $this->title);

Of course, you still need your query parameters appended to the feed URL. In my case I'm using: