[Zope-dev] Custom dtml tag
Andy McKay
andym@ActiveState.com
Mon, 18 Sep 2000 14:21:30 -0700
Finally woke up on this problem.
Got this working by simply calling resolve_url upon the request object. But
what I want is a result that changes depending upon the object. Let's face
it, this can be acheived a whole lot easier by creating a method for the
objects and calling that.
So thats what Ive done and stayed away from using a dtml-tag.
Thanks for your help.
----- Original Message -----
From: "Brett Carter" <brett@kavi.com>
To: "Andy McKay" <andym@activestate.com>
Cc: <zope-dev@zope.org>
Sent: Wednesday, September 13, 2000 9:51 AM
Subject: Re: [Zope-dev] Custom dtml tag
> Andy - looking up 'this' in a dtml method or document won't work
> unless you expose it in your python product/tag definition. I'm
> talking about getting 'this' inside a dtml tag that I have defined
> myself (i.e. <dtml-foobar></dtml-foobar>). If you want 'this'
> available in dtml, write an external method and just return 'self'
> def this(self): return self
> -Brett
>
> >>>>> "Andy" == Andy McKay <andym@activestate.com> writes:
>
> Andy> Really? Ive looked up this and get nothing (an attribute error
actually) and
> Andy> its not in globals. If that would work that would be great - but
a it
> Andy> certainly doesnt seem to on a standard DTMLDocument / Method.
>
> Andy> ----- Original Message -----
> Andy> From: "Brett Carter" <brett@kavi.com>
> Andy> To: "Andy McKay" <andym@activestate.com>
> Andy> Cc: <zope-dev@zope.org>
> Andy> Sent: Tuesday, September 12, 2000 4:17 PM
> Andy> Subject: Re: [Zope-dev] Custom dtml tag
>
>
> >> Andy: here's what I've gleaned - in a dtml tag's render() method,
you
> >> get passed in self and a template dict, in my example let's call it
> >> 'md'. md is essentially a stack/dictionaryish object of the
*current*
> >> namespace - and one of the handy things that's always around in the
> >> namespace is the 'this' function, which returns the object on the
top
> >> of the stack.
> >>
> >> Just lookup 'this', run it, and there you have a reference to the
> >> calling object! Ex:
> >>
> >> def render(self, md)
> >> this = md.getitem('this')
> >> callingObj = this()
> >> return "Calling object was %s" % (callingObj.id())
> >>
> >> Note I haven't tested this code. Good luck!
> >> -Brett
> >>
>
> _______________________________________________
> Zope-Dev maillist - Zope-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zope-dev
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://lists.zope.org/mailman/listinfo/zope-announce
> http://lists.zope.org/mailman/listinfo/zope )
>