[Zope] Accesing a new context from a manipulated string

Rik Hoekstra rik.hoekstra@inghist.nl
Fri, 30 Jun 2000 22:16:00 +0200


>Here's my problem:
>
>given a method itemURL(), that typically returns a site
>relative URL such as '/about/', I need to change to the
>appropriate directories context using <dtml-with>.
>
>In short I need to do the equivalent of <dtml-with about>.
>
>The closest I've gotten so far is:
>
><dtml-with expr="_.getitem(itemURL(), 0)">
>
>which generates a KeyError: /about/ in the traceback.
>
>Can anyone help me truncate the extra '/'s off of this
>string and pass it to the <dtml-with>?
>


This is going to be awkward in DTML, but it can be done. But there may be
some different cases (all untested):

simplest case '/about/' :
<dtml-let strippedURL="itemURL()[1:-1]">

strippedURL -> 'about'


more intricate case '/about/whatever/'
<dtml-let strippedURL="itemURL()[1:-1]">
   <dtml-let strippedURL="_.string.replace(strippedURL, '/', '.')">

strippedURL -> 'about.whatever'

or, more convoluted

 <dtml-let strippedURL="_.string.replace(itemURL()[1:-1], '/', '.')">

if you're not certain if your itemURL has a starting and a trailing /, you
will have to make this conditional. You're better off using a PythonMethod
then.

hth

Rik