Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

General Questions

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

RSS Feeds


Go to End
Reply

10 Posts   2667 Views

Avatar
Mackodlak

6 May 2011 at 1:45am Community Member, 95 Posts

Ok guys, I have an assignment that I have to finish by monday preferably. I need to have a RSS feed page that would display RSS feeds from like 8-10 sources and then I have to randomly pick like 3 of them and place them on home page or sth else.

I have been looking at some links here:

http://www.silverstripe.org/customising-the-cms/show/11548
http://www.silverstripe.org/general-questions/show/9594?start=0

to name a few, and also been trying to figure out some modules like SS_RSS_Feed_Manager and RSS connector.
I am trying to make some sense out of this, but could use some help.

Since I'm kinda new to SS and PHP I would bee grateful if you could assist me in a best way to do this.
I have precious little time to complete this so I can't try out all the options before me, so mby if you could point me in right direction, if not provide me with a solution

Avatar
ayyurek

14 May 2011 at 1:00am (Last edited: 14 May 2011 1:00am), Community Member, 41 Posts

I don't know if it helps but I am getting news form an external RSS source with this code.

class RssListPage extends Page {
static $db = array(

);
static $has_one = array(
);

}

class RssListPage_Controller extends Page_Controller {

function CustomRSSFeed() {

include_once(Director::getAbsFile(SAPPHIRE_DIR . '/thirdparty/simplepie/simplepie.inc'));

$feed = new SimplePie("http://www.yourdomain.com/rss.xml", TEMP_FOLDER);
$feed->init();

$output = new DataObjectSet();
if($items = $feed->get_items(0, 10)){
foreach($items as $item){
$output->push(new ArrayData(array(
"Title" => $item->get_title(),
         "Summary" => $item->get_description(),
         "Date" => $item->get_date('d m y | g:i'),
"Link" => $item->get_link()
)));
}
}
return $output;
}

}

and in template

<% control CustomRSSFeed %>
$Title $Summary $Date
<% end_control %>

Avatar
Mackodlak

25 May 2011 at 11:37pm Community Member, 95 Posts

Hey mate,

I am sorry for not answering you sooner. Haven't rly looked at this post in a while, but seems like it may be just what I'm looking for.

I guess I would have to dl silverpie and another thing, the source is somehow connected with $feed = new SimplePie("http://www.yourdomain.com/rss.xml", TEMP_FOLDER); line, I just didn't figure out what is TEMP_FOLDER?

Avatar
Mackodlak

26 May 2011 at 8:53pm Community Member, 95 Posts

Just to clarify, should I make a folder named TEMP_FOLDER or what? cause I tried what you showed me and for some reason dev/build won't make this page type, it just keeps ignoring it each time I try.

Avatar
ayyurek

27 May 2011 at 2:27am Community Member, 41 Posts

Hi,

Actually I didn't do anything specially about temp_folder when I used this code. It just worked.

But I think it points to tmp folder in the file system. Silverstripe uses this folder for cache and other purposes, unless you create a folder named silverstripe-cache. Maybe tmp folder is not writable because of security issues. You can try to create a folder in the root of your web site and name it silverstripe-cache. (in the same level with mysite, assets etc.) And make this folder writable.

I hope it helps.

Avatar
Mackodlak

27 May 2011 at 2:56am (Last edited: 27 May 2011 2:58am), Community Member, 95 Posts

Yeah, it is working perfectly, I actually did a lot of work with this today and it has helped me a lot.
The problem wasn't with TEMP_FOLDER but I just copy-pasted ur code when trying it out and forgot to put <?php at the begining of .php file so that is the reason it didn't work.
Kinda noobish mistake from me, but then again I am a noob with silverstripe, php and html :D But I think I'm a fast learner.

Anyways it is working for me, but I have other issues with it. I am pulling feed from numerous sources and each has it's own RSS feed format. Let me explain: under 'description' (this->get_description) there is all sorts of things - long texts, short texts; links; icons; "SPONSORED BY..." parts etc. Example:
http://rss.packetstormsecurity.org/files/ - the way I want it to be displayed
http://isc.sans.edu/rssfeed_full.xml - to much text - mby only show first paragraph
http://www.darkreading.com/rss/all.xml - perfect - the way I want it to be displayed
http://feeds.wired.com/wired/politics/security?format=xml - I don't want icons and blue links/text
http://feeds.feedburner.com/itsecurity?format=xml - would like not to display On-Demand Webinar > Watch Now!>>SPONSORED BY: Juniper Networks part (and simmilar)

Is there a way to show just the dirst paragraph of actual description? the "On-Demand Webinar > Watch Now!>>SPONSORED BY: Juniper Networks" on IT security would be ok if it is left there if all other feeds from other sources display nicely - how do you think would be the best way to dispay them?

Avatar
ayyurek

27 May 2011 at 3:28am Community Member, 41 Posts

What data you get, it depends on the publisher :)

But you can get first paragraph with $Summary.FirstParagraph

Have a look at

http://api.silverstripe.org/2.4/sapphire/model/Text.html

You can maybe find some way to get just text without links and images =)

You can also hide images and other stuff with css display:none. But it will not be a nice method. If there are so many images.

<div id="rss-container">
$Summary
</div>


and in css file

#rss-container img { display:none; }

Avatar
Mackodlak

7 July 2011 at 9:16pm Community Member, 95 Posts

Well having a problem with RSS.
$Summary.FirstParagraph doesn't work
I need sth fixed length to be able to fit into layout
RSS returns $Title, $Link and $Summary
Help plz

Go to Top