On Wed, Feb 21, 2007 at 12:32:30PM +0100, Gaute Amundsen wrote: > On Tuesday 20 February 2007 17:39, Paul Winkler wrote: > <snip> > > Another option is that the object at /articles could be an instance > > of a class that looks something like: > > > > class MyArticleContainer(): > > > > def __before_publishing_traverse__(self, unused, request): > > # Save the rest of the path as 'traverse_subpath'. > > request.set('traverse_subpath', > > reversed(request['TraversalRequestNameStack'])) > > # Tell the publisher to stop traversing now. > > request['TraversalRequestNameStack'][:] =  > > > > def __call__(self, *args, **kw): > > subpath = self.REQUEST['traverse_subpath'] > > data = get_data_however_you_like(subpath) > > return data > > > > > > For background, read the stuff about traversal hooks at > > http://wiki.zope.org/zope2/ZPublisher > > > Hm.. that looks more like what I had in mind when I posted, but allso quite a > bit more overhead than rewriterules. > At least for me that has never written a product.
Well, it may feel like a lot of work to you the first time :-) > I will have to think about that one.. > Would you care to elaborate a little bit on what the tradeoffs would be? My approach might be good if: - the logic for looking up articles is more complex than can be comfortably expressed using apache rewrite rules, and/or - the logic for looking up articles requires state that's internal to zope. You could instead follow Andreas' suggestion and use a through-the-web Script. It might look something like: article_id = traverse_subpath[-1] data = context.get_the_data_somehow(article_id) return data Your URLs would then look like: http://example.com/folder_id/script_id/article_id Note that naming the script index_html doesn't really help, because http://example.com/folder_id/article_id wouldn't invoke the script. -- Paul Winkler http://www.slinkp.com _______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )