[Zope] DTMLMethod Question

Tres Seaver tseaver@palladion.com
Mon, 07 Feb 2000 17:23:01 -0600


"James W. Howe" <jwh@allencreek.com> wrote:

> I've got a folder which contains DTMLMethods which are used to format a
> "news" article in a certain way.  One of the methods is responsible for
> actually displaying the article contents, the others are responsible for
> generating various navigational components.  I'm now designing a new view
> which is also going to display a news article, plus some other stuff.  The
> major difference is that this view is only going to show a subset of
> information.  I would like to reuse the article display code but I'm not
> exactly sure how to do it.  What I would like to do is retrieve the first N
> characters from a news article and then have my method format
> it.  Something like:
> 
> <dtml-var "formattingMethod(???, <dtml-var articleContent size=500>)">
>
> I'm not fluent enough in all the nuances of how you call a DTMLMethod
> rather than get results via reference/acquisition.  I suppose I could pass
> the length restriction as a parameter and if that parameter didn't exist
> the full article would be retrieved.  I would rather simply pass the
> article contents and let the method format what it is given.
> 
> Any help would be appreciated.

See ZGotW #1 :)  Calling one DTML Method from within another requires passing
through two "required" parameters, one for the "client" object and one for the
namespace.  So, to just call it:

 <dtml-var "formattingMethod(???, articleContent( this(), _ ) )">

You can then use the majyk of Python to slice off the first 500 characters:

 <dtml-var "formattingMethod(???, articleContent( this(), _ )[:500] )">


-- 
=========================================================
Tres Seaver         tseaver@palladion.com    713-523-6582
Palladion Software  http://www.palladion.com