David,

Thanks for the explanation. Works like a charm.
One more question: is it possible to have a parameter in a route that only 
appears for a certain ouptut type.
E.g.: I have the route
<route name="Nieuws" pattern="^/nieuws/(page:\S+)?" module="Algemeen" 
action="NieuwsTonen>
        <defaults>
                <default for="page">1</default>
        </default>
</route>

Combined with the rss output type this gives url's like /nieuws/1/rss. This is 
not very elegant and the page parameter is actually only relevant for the html 
output (sine that is paged, but rss just displays the latest X news items).

Greetings,
Koen

P.S.: I already had a baseview, but I did not have the setup with 
executeHtml(). Thanks for the tip.
 

> -----Oorspronkelijk bericht-----
> Van: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] Namens David Zülke
> Verzonden: maandag 22 januari 2007 13:58
> Aan: Agavi Users Mailing List
> Onderwerp: Re: [Agavi-Users] Generating a RSS feed
> 
> Hi Koen,
> 
> you were right - all you need is a new output type!
> 
> First, you have to define that new one (e.g. "rss") in 
> output_types.xml. You can define a renderer if you want to 
> use a template to generate the output, or you omit the 
> renderer definition and use a library to generate the RSS 
> content in the view (even though I'm not aware of any PHP 
> libraries that generate RSS).
> Next, simply define executeRss() in your View and put the 
> necessary code in there.
> Now all that's left is to decide that we want RSS as the 
> output type and not HTML. To do that, you have several 
> options. You can use the
> routing:
> <route name="rss" stop="false" pattern="/rss$" 
> output_type="rss" /> That will set the output type to "rss" 
> for all URLs that end on /rss.  
> You can generate such an RSS variant of a URL using 
> $r->gen('routename 
> +rss', ...);
> Alternatively, you could use a filter, but that's not very elegant.  
> The last opportunity to change the output type is in your 
> view's initialize method, you could check a request parameter 
> there or something. But using the routing is definitely the way to go.
> 
> Hope that helps,
> 
> David
> 
> 
> P.S: it is recommended that you have a MyBaseView from which 
> all views extend. This base view has an execute() method that 
> throws an exception, or forwards to a 404 action. All your 
> specific views implement only executeHtml(), executeRss() etc 
> methods. That way, you do not need to worry about the routing 
> setting an output type that some of your actions/views do not 
> implement.
> 
> 
> 
> Am 22.01.2007 um 08:58 schrieb Van Daele, Koen:
> 
> > Hi,
> >
> > I'd like to make a RSS feed for newsitems. I've already got 
> an action 
> > a a view to display the html page with the newsitems, but 
> now I'd like 
> > to generate a feed for this.
> >
> > Do I need to define a completely different but identical action for 
> > this or can I reuse the action and e.g. set the output type to rss? 
> > Can anyone give an example of the different files that need to be 
> > altered for this (routing, output_types, view, ...)?
> >
> > Greetings,
> > Koen
> >
> > _______________________________________________
> > users mailing list
> > [email protected]
> > http://lists.agavi.org/mailman/listinfo/users
> >
> 
> 
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.agavi.org/mailman/listinfo/users
> 

_______________________________________________
users mailing list
[email protected]
http://lists.agavi.org/mailman/listinfo/users

Reply via email to