Feed Widget: Open Source Alternative to Feeds.App Movable Type Plugin

"Feed Widget" allows you to easily display RSS and Atom feed summaries in your Movable Type templates. Just unpack the zip file and put "Feed_Widget" in your plugin directory. Then,
you'll have the following new tags available to you:

  • OSFeed uri=""

    A container tag representing a feed (RSS or Atom) feed. The "uri" argument is required and should be the URI of the feed.

  • OSFeedEntries [ lastn=""]

    A container tag that will loop through the entries of the current feed.  Entries are returned in the order that they appear. Using "lastn" limits the total number.

  • OSFeedEntryTitle

    The title of the current feed entry within the current OSFeedEntries loop.

  • OSFeedEntryLink

    The URL of the current feed entry within the current OSFeedEntries loop.

Here's a complete example:
<div class="widget-archive widget">
<h3 class="widget-header">Recently posted on<br/><a href="http://use.perl.org/~markjugg/journal">use.perl</a></h3>
<div class="widget-content">
<mt:OSFeed uri="http://use.perl.org/~markjugg/journal/rss">
       <ul class="widget-list">
         <mt:OSFeedEntries lastn="10">
        <li class="widget-list-item"><a href="<mt:OSFeedEntryLink>"><mt:OSFeedEntryTitle></a></li>
         </mt:OSFeedEntries>
           </ul>
</mt:OSFeed>
</div>
</div>

(The "OS" in the tag names stands for "open source" and is to avoid conflict with Feeds.App, which uses similar names).

The plugin does use caching and conditional requests to minimize publishing overhead. However, it does not handle periodically rebuilding the site to reflect changes in the feeds. Look into a tool like mt-rebuild to handle that part.

This plugin is free, open source software, and is licensed under the same terms as Perl.

11 Comments

Found this via a Google search and it is just what I needed. Worked flawlessly. Thanks!

Are there any special Perl Libraries that need to be installed to use this plugin? I installed it but I'm getting errors:
Can't locate Date/Parse.pm in @INC (@INC contains: /opt/local/apache2/cgi-bin/mt/plugins/WXRImporter/lib /opt/local/apache2/cgi-bin/mt/plugins/TypePadAntiSpam/lib etc etc...


Thanks for the feedback. I've just updated the article to link to a "1.01" version which bundles "Date::Parse", so you shouldn't need to install anything else separately.

Yay! Thanks a lot! Do you have any plans to give this more functionality? I'd love if it could parse images other parts of the RSS feed.

Thank you for a wonderful script!

Hmm. Just installed the new version and had this error. Maybe missing one more component?

Can't locate Digest/SHA1.pm in @INC (@INC contains: /opt/local/apache2/cgi-bin/mt/plugins/WXRImporter/lib /opt/local/apache2/cgi-bin/mt/plugins/TypePadAntiSpam/lib /opt/local/apache2/cgi-bin/mt/plugins/Textile/lib /opt/local/apache2/cgi-bin/mt/plugins/StyleCatcher/lib /opt/local/apache2/cgi-bin/mt/plugins/spamlookup/lib /opt/local/apache2/cgi-bin/mt/plugins/Sociotags/lib /opt/local/apache2/cgi-bin/mt/plugins/PollPosition/lib /opt/local/apache2/cgi-bin/mt/plugins/Podcast/lib /opt/local/apache2/cgi-bin/mt/plugins/MultiBlog/lib /opt/local/apache2/cgi-bin/mt/plugins/feeds-app-lite/lib /opt/local/apache2/cgi-bin/mt/plugins/Feed_Widget/extlib /opt/local/apache2/cgi-bin/mt/plugins/CommentSubscribe/lib /opt/local/apache2/cgi-bin/mt/addons/Community.pack/lib /opt/local/apache2/cgi-bin/mt/addons/Commercial.pack/lib /opt/local/apache2/cgi-bin/mt/extlib /opt/local/apache2/cgi-bin/mt/extlib lib /opt/local/lib/perl5/5.8.8/darwin-2level /opt/local/lib/perl5/5.8.8 /opt/local/lib/perl5/site_perl/5.8.8/darwin-2level /opt/local/lib/perl5/site_perl/5.8.8 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level /opt/local/lib/perl5/vendor_perl/5.8.8 /opt/local/lib/perl5/vendor_perl .) at /opt/local/apache2/cgi-bin/mt/plugins/Feed_Widget/extlib/Cache/File.pm line 28. BEGIN failed--compilation aborted at /opt/local/apache2/cgi-bin/mt/plugins/Feed_Widget/extlib/Cache/File.pm line 28. Compilation failed in require at /opt/local/apache2/cgi-bin/mt/plugins/Feed_Widget/feed_widget.pl line 60.

I have no plans to develop this further at this time, but I may also add Digest::SHA1 to the bundle. It can also be manually installed separately. It's open source anyone else is welcome to make further improvements and publish the result.

You might also try a competing plugin, Feeds.Apps Lite. It used to be closed source, which is why I made this plugin, but now it is open source. There is also a more full-featured Feeds.App commercial version (which I haven't tried).

hi mark,
thanx for the plugin! works much better than FeedsAppLite for me.

however (isn't there always one however) i have a problem with feeding twitter-RSS's or ATOMs to the plugin, they seem to appear and disappear with each rebuild. so i thought this might be due to twitter's servers responding too slowly -- is there any way to edit a timeout setting for the plugin?

thanks again, cheers from sunny germany,
-M

Martin,

Thanks for the feedback. The plugin uses XML::FeedPP, which uses XML::TreePP, which has an option called "lwp_useragent", which allows you to use LWP::UserAgent object, which allows you call the timeout() method to adjust the timeout.

The plugin as it stands provides no easy way to adjust the time out, if you are willing to get your hands dirty with some Perl, I think it would be possible to make the timeout adjustable.

mark,
thanx for the quick reply! actually, i'm not friends with perl ... ;-{
still, could you point out the direction i'd have to be going?

(you don't have to go into too much detail, i really don't know if i'll be able to go that way.)

cheers!
-M

PS there seems to be sth. wrong w/ your mt-comments.cgi, everything's fine when i hit PREVIEW, but when i click SUBMIT, the ensuing page has lost, well it has lost almost everything, no HTML, no HEAD, no STYLE, it starts w/
h2 class="comments-header" 9 Comments ...

Mark,

Trying the plugin. It installed fine, but I keep getting this error and nothing comes through.

Feed Widget: failed to fetch feed: Usage: $h->push_header($field, $val)

Not sure what I am doing wrong. I know it's on my end because no matter what rss I look for, it shows the same error.

Thoughts? Thanks.
Nathan

Leave a comment

Recent Entries

Close