cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Lundquist>
Subject Re: aggregating a flowscript-page
Date Fri, 08 Dec 2006 01:58:33 GMT

Hi Sven!

On Dec 7, 2006, at 2:46 PM, sven goosen wrote:

> What I want to have, is that every *.jx page will be aggregated with 
> my menu.xml.

RIght! :-)

> But how can I do this. I can't put an <map:aggregate> in my *.jx 
> match. because the <map:generate> is already there.

Yeah, it doesn't make any sense to put an aggregator after a generator, 
does it?

Like I told somebody else a while back, "Think pull, not push".  When 
you think about the matcher that's going to match a request, don't 
think first about how where the data stream starts, instead think about 
the end of the pipeline, because that's how your matcher has to end (or 
with a redirect), then work backwards.

Here's what I always do... something like this:

   <match pattern="**">  <!-- Everything!!!! -->
     <call resource="page.html">
       <parameter name="page" value="{0}"/>

   <resource name="page.html">
     <aggregate element="page">

       <!-- Here's the "pull"... match this to get main
               content source for the page -->
       <part element="source" src="cocoon:/{page}.source" />
       <part element="nav" src="whatever" />
       <!-- etc... -->
     <transform src="context:/xslt/site/page.xslt"/>  <!-- whatever-->
     <serialize type="html"/>

Now, you can have any number of matchers to provide content source in a 
variety of ways, e.g.

    <!-- client requested "foo"; flow handles this one... -->
    <match pattern="foo.source">
        <call function="foo"/>

    <!-- continuations -->
    <match pattern="**.continue.source">
	<call continuation="{1}"/>

    <!-- everything else: just regular xhtml -->
    <match pattern="**.source">
        <generate src="context:/content/{1}.xml"/>
        <serialize type="xml"/>

Cheers and HTH,

PS — I actually like use ":source" instead of ".source", but that 
doesn't work without a patch.  Cocoon is broken and throws an exception 
if you try to use a colon inside the context-path part of a URI.  The 
patch hasn't been accepted into Cocoon yet though... :-/

View raw message