3
votes

I would like to have a simple linklist of blogs with their latest entry, author, blog name, and date be listed in order of latest update. So, kinda like what Blogger has on their sidebars -- whenever they have linklists, it auto-reorders based on which blog has been updated recently (though it usually doesn't have summaries, just the title of the site).

What I'd like to do is plug in multiple RSS feeds into one place that just checks the latest entry in each feed and then reorders them

The magpie plugin or RSS plugin in EE currently only allows you plug in ONE feed. It will show the latest entry per blog if I repeat the magpie tags several times (one per blog), but that doesn't help with re-ordering, and also it's a bit messy.

Help? Thoughts?

UPDATE: I want to make sure that each blog is still featured even if the last post they've done is a year ago. A blog like that will be the last in the link list for example, while an entry/site updated this hour will be at the top. So for example, if I limit the linklist to 5, it's not going to show the 5 most recent entries, period, from just one site if that one site updated 5 times in one hour. It will show 1 recent entry per site.

Sample behaviour: like the Flickr Friends Page sorted by date and 1 photo per person. http://www.flickr.com/photos/friends/ Except this time, just titles of blog posts and the site they belong to, author, etc.

5

5 Answers

3
votes

There is an RSS Aggregator EE Add-on available which combines feeds for you

http://devot-ee.com/add-ons/rss-aggregator

{exp:rss_aggregator:items feed_ids="6|7" limit="10" order_by="pub_date" order="desc" pub_date_format="m-d-Y g:ia" cache_timeout="60"}
    <li>
        <a href="{link}">{title}</a><br />
        <small>{pub_date} - From {channel_title}</small><br />
    </li>
{/exp:rss_aggregator:items}
2
votes

You could do this using Yahoo! Pipes. In fact, I created one a bit ago: http://pipes.yahoo.com/pipes/pipe.info?_id=82e8b23b84bf2d6c3014f50c0f6b2f1d

Just call it with a comma-delimited list of RSS feeds and voila! It gives you the latest entry for all the RSS feeds, sorted in reverse chronological order.

Example:

http://pipes.yahoo.com/pipes/pipe.run?_id=82e8b23b84bf2d6c3014f50c0f6b2f1d&_render=json&feedurls=appleinsider.com.feedsportal.com/c/33975/f/616168/index.rss,feeds.foxnews.com/foxnews/latest?format=xml

So now that you have the feed's URL, you can pull out the individual entries using the REST module from Phil Sturgeon.

For those interested, here's how the pipe is setup:

enter image description here

1
votes

Fairly sure Stash could handle this via set_list and get_list. I haven't tested this but perhaps something like:

   {exp:channel:entries channel="feed_urls"}
      {exp:magpie url="{url}" limit="1"}
         {items}
            {exp:stash:append_list name="feed_items"}
               {stash:title}{title}{/stash:title}
               {stash:pubdate}{pubdate}{/stash:pubdate}
            {/exp:stash:append_list}
         {/items}
      {/exp:magpie}
   {/exp:channel:entries}

   {exp:stash:get_list name="feed_items" orderby="pubdate"}
      <h3>{title}</h3>
      <p>{pubdate}</p>
   {/exp:stash:get_list}

https://github.com/croxton/Stash

0
votes

What about using an entries loop with multiple channels, pulling lastest from that and stashing it. Then get the stash in the RSS feed? I think that would work.

0
votes

You could probably do it with Datagrab because it lets you import XML feeds into your own site and then you'd be able to order them as EE channel entries.