Getting the Most Out of SMF - XML, RSS and RSS2 (and Atom and RDF) feeds

Started by Oldiesmann, January 20, 2005, 12:55:32 PM

Previous topic - Next topic


One of the best features in SMF is its news feeds. However, many people aren't aware of how many options there are, or that this is even available. So, here's a list of available options and what they do...

First, make sure you've enabled the feeds:

Admin -> News and Newsletters -> Settings
Check the box next to "Enable XML/RSS News".
The "Maximum post length" value determines how many characters of a post are output in the feeds. The default value (255) is fine for now

Now, on to the fun stuff.

All of the XML content is accessed via the ".xml" action...
Other formats can be achieved by adding one of the following to the URL:
;type=atom - Atom
;type=rdf - RDF
;type=rss - RSS 0.91
;type=rss2 - RSS 2.0

The default feed is the 5 most recent posts:

There are several "sub-actions" available to this action, specifying exactly what to display:

Recent Posts (displays the most recent posts that you can see)
"Sub-action": recent
Default: Shows 5 most recent posts
Available options:
limit=x - display the "x" most recent posts (if number is less than 5, it will display 5. If number is larger than 255, it will display 255).
board=y - display only the recent posts from board "y"
boards=x,y,z - display only the recent posts from the specified boards
c=x or c=x,y,z - display only the recent posts from boards in the specified category/categories

News (displays the first post from the most recent topics that you can see)
"Sub-action": news
Available options:
limit=x - display only "x" items
board=y - display only news topics from board "y"
boards=x,y,z - display only news topics from the specified boards
c=x or c=x,y,z - display only news topics from boards in the specified category/categories

Members (displays most recent members):
"Sub-action": members
Available options:
limit=x - display only the "x" most recent members

Profile (displays the "profile summary" data in a nice XML feed for the specified user)
"Sub-action": profile
Required option:
u=x - display the profile info for user whose ID is "x"

Now - you're probably wondering what you can do with this. Quite a bit actually.

You can syndicate this stuff by giving people these URLs to use on their sites (they will need to have their own RSS parser to deal with it though - CaRP is a good free one (requires PHP)). You can also use PHP's XML Parser Functions to format the output the way you want it (although you can also do this using SSI.php). There are also several free sites that will parse the feeds for you, including and

You can also subscribe to these feeds through an XML reader, Firefox, Thunderbird or any other software that supports XML or RSS feeds (note - Outlook and Outlook Express do not support this...) - you will need to have either "type=rss" or "type=rss2" somewhere in the URL for it to work. If you would like to know how to set this up in Firefox or Thunderbird, let me know. Enjoy!

EDIT: Updated post to reflect options available in 1.1.
EDIT again: Fixed typo (";type=rss - RSS 2.0" -> ";type=rss2 - RSS 2.0" - thanks to Sarge for pointing that out)
Michael Eshom
Christian Metal Fans



I have done what you say but i have tis erreor :

La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


I also ad this :
   // If RSS/XML news is enabled, indicate that an RSS feed is available
   if (!empty($modSettings['xmlnews_enable']))
      echo '
      <link rel="alternate" type="application/rss+xml" title="RSS" href="', $scripturl, '?type=rss;action=.xml;limit=20" />';

Référence à l'entité non définie 'agrave'. Erreur de traitement de la ressource

  <time>29 Janvier 2005 &agrave; 16:37:11</time>


Instead of using "&agrave;" in your time format, use the entity code - I don't remember what it is, off hand, though.



Instead of resent posts is there a way to get the same results as "Show unread posts since last visit.". I can't just set action =unread which was my first thought. sa=unread gives me something different, seems that posts are grouped by thread. I'm not sure what sa is even though.

anyway help would be cool thanks.


Michael Eshom
Christian Metal Fans


I just tried this for the most recent posts by board, but I'm not getting any results.  When I tried the example above using this board, it only gives one post.  Though when I tried it on my system (without specifying a board number) it did appear to work correctly.

I actually want the most recently updated topics, not the posts themselves.  I guess I could do that by ignoring duplicate topics.  That is I actually got a response from the server for the appropriate board.
Running SMF since May '04.  Started with YaBB on Oct 2001.


Find, News.php:

WHERE m.ID_MSG >= " . ($modSettings['maxMsgID'] - 4 * $_GET['limit']) . "


WHERE m.ID_MSG >= " . ($modSettings['maxMsgID'] - 40 * $_GET['limit']) . "

How do I modify files?



Quote from: [Unknown] on February 11, 2005, 06:23:33 PM
Find, News.php:

WHERE m.ID_MSG >= " . ($modSettings['maxMsgID'] - 4 * $_GET['limit']) . "


WHERE m.ID_MSG >= " . ($modSettings['maxMsgID'] - 40 * $_GET['limit']) . "

[[:How do I modify files?]]


that won't do it.  I was just looking the line of code over, and it appears to work by subtracting from the message id.  I upped it to 400 and then used the limit, and that seemed to get around it.

I looked over the source for the news.php file, and it doesn't really have the kind of functionality I want.  I'll play with it at some point, and maybe write a new function for returning the most recently updated threads instead of just the most recently updated posts.
Running SMF since May '04.  Started with YaBB on Oct 2001.


is there a Way of requesting the RSS as a logged in user?

cause we have one board that is visible to all (where no one can post)
and the rest is only for authorised users

It would be nice to have somthing like

to get info from all boards


Quote from: Robinski on March 03, 2005, 05:23:43 PM
is there a Way of requesting the RSS as a logged in user?

Yes! If you use the live-bookmarks feature in Mozilla to get the feed then provided you're logged in it will use the stored cookie and you will see messages according to your user privileges.

* hugs Firefox *

BTW, thanks for the extra info Oldiesman, very very useful.
Treo forum - Powered by SMF, of course
Treo news - powered by MovableType and integrated with SMF
Treo downloads - hacked from phpNuke and integrated with SMF
Treo knowledge base - powered by Wikka and integrated with SMF
Treo 650 | Treo 700w | Treo 700p


Ill try that one .. thanx

though it still would be nice if I could do something like user=... and pass=...
so I can use every RSS reader I wouldlike


Thunderbird will not accept this one as a valid rss feed??;type=rss

It works with Firefox livebookmarks ???

Please help...



I can get feeds to work in thunderbird and my own feeds in firefox, but not my own feed in thunderbird. I just stick to the livebookmarks, so no problem. Just strange  8)


Me and my moderators are interested in a RSS feed which only shows new topics: the first message of a new topic and the board. So they can respond quickly when they notice that it has been placed in the wrong board.

Could you create a RSS(2) feed for this purpose?


I`m just getting a bit confused with all this..... (lol)

Can you disply RSS feeds within a forum?

if i set up a news forum could you make it that the feed would apper under a new post ?

or do i have to set it up within the news box?

Some one mentioned using a site to convert it to java scrip.... where would i post the script?



what must i do so that i can loggin trough the link like: ;name=bla;pw=nice ? Cause I don't use Firefox to call for the news. And the login feature of the programm doesn't work


The action above displays the 20 most recent posts. Is there a way to display the 20 most recent topics?