[Zope] grabbing the url query string

Jonathan dev101 at magma.ca
Tue Jul 10 07:14:02 EDT 2007


----- Original Message ----- 
From: "David Bear" <David.Bear at asu.edu>
To: "zope" <Zope at zope.org>
Sent: Monday, July 09, 2007 9:05 PM
Subject: [Zope] grabbing the url query string


>I would like to have a url that I can use to address a zope object
> where I grab the query string and 'do something with it'. The issue is
> I want to be able to do this for any/all zope objects. For example
> lets say I have a zpt in my site called http://mzope.edu/zopeobject
>
> I would like to be able to do http://mzope.edu/zopeobject?id=129292
>
> and have a way to capture the value of 'id'..
>
> The use case I have in mind is a set of emails where I hand out a url to a
> page in a zope or plone zie that has a key or tag on it like the id
> above. In one set of email id=abc, in another set the id=xyz. I want
> to track 'clicks' based on which mailing generated the click. But I
> want to be able to apply the 'method' to any/all zope objects.

I have heard of a pre-traversal hook called "before_publishing_traverse", 
but I have never investigated or tried it (others may have more info on 
this) - I think it is used in skinning and may be adaptable to your needs.

Using 'known' methods I would approach your use case (if I understand it 
correctly) as follows:

1) set up a python script 'cntr', which tracks your clicks and then does a 
redirect to the required zope object
2) set up your urls like: 
http://mzope.edu/cntr/129292/targetfolder/targetobject

In the 'cntr' python script you will have access to a list variable, in 
REQUEST, called "traverse_subpath".  Each element of the traverse_subpath 
list will be one of the url parameters that follows 'cntr' in the url.  For 
example, for the url above:

traverse_subpath = ['129292', 'targetfolder', 'targetobject']

It will be a trivial exercise to extract the counter 'id' (first element of 
list) and then reconstruct a url, for the redirect, from the remaining list 
elements.

hth

Jonathan 



More information about the Zope mailing list