-
Notifications
You must be signed in to change notification settings - Fork 3
/
view-rss.gtw
98 lines (68 loc) · 2.96 KB
/
view-rss.gtw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
~~LANG:FR@frman:vues/vue-rss~~
jResponseRss20 allows to generate an RSS feed. It's fully compliant with [[http://cyber.law.harvard.edu/rss/rss.html|RSS 2.0 specifications]].
The alias usable with @@M@getResponse@@ is "rss2.0":
<code php>
$resp = $this->getResponse('rss2.0');
</code>
===== RSS Feed Informations =====
jReponseRss20's property @@P@infos@@ is an object allowing to set the RSS feed's properties: title, website url, copyright, description, etc.
For example:
<code php>
$resp->infos->title = 'Jelix news';
$resp->infos->webSiteUrl= 'http://jelix.org/';
$resp->infos->copyright = 'Copyright 2006-2008 jelix.org';
$resp->infos->description = 'News about Jelix, fresh meat for hairy trolls.';
$resp->infos->updated = '2007-06-08 12:00:00';
$resp->infos->published = '2007-06-08 12:00:00';
$resp->infos->ttl = 60;
</code>
Property @@P@ttl@@ is the cache-timeout, in minutes.
Property @@P@description@@ should be a string; however it's possible to specify the format (HTML or XHTML) in property @@P@descriptionType@@.
Property @@P@descriptionType@@ expects any of the following values : "html", "xhtml" ou "text".
===== Items =====
The RSS channel should be fed with items to publish.
For example, items can have the description of each new tickets of a blog.
Each item should be created with jResponseRss20's method: @@M@createItem()@@.
It allows to fetch an object with item's informations.
You can fill this object and add it the the response with jResponseRss20's method : @@M@addItem()@@.
For example, with a news DAO:
<code php>
$newsdao = jDao::get('news');
$first = true;
/*
Fetch the ten last news from the DAO,
assuming it's ordered from the newest to the oldest.
(method defined in the DAO)
*/
$list = $newsdao->findTenFirstNews();
foreach($list as $news){
if($first){
/*
The first record allow to fetch channel's date
*/
$resp->infos->updated = $news->date_create;
$resp->infos->published = $news->date_create;
$first = false;
}
// Fetch the URL from the news article
$url = jUrl::get('news~default:article', array('newsid'=>$news->id));
// Create an RSS item, specifying the title, url, and date (format : [yyyy-mm-jj hh-mm-ss] )
$item = $rep->createItem($news->title, $url, $news->date_create);
// News author
$item->authorName = $news->author;
// Item's contents
$item->content = $news->content;
$item->contentType ='html';
/*
Assuming the news-URL being the news-ID in this example.
Note that it would have been possible to use : $item->id =$news->id
*/
$item->idIsPermalink = true;
// Add this item to the feed.
$resp->addItem($item);
}
</code>
===== Other informations =====
It's possible to explicitely specify more informations about the RSS food or about each item.
Check the API documentation about [[refclass:core_response/jRSS20Info|jRSS20Info]]
and [[refclass:core_response/jRSSItem|jRSSItem]] to go deeper.