Trevor Toenjes writes:
****************************************** how-to generate a DTMLMethod for a random zClass in a folder? ******************************************
<dtml-with folderwithmyZclasses> <dtml-var expr="_.random.choice(objectValues('myZclass')).myZclassDTMLmethod (_.None,_)" </dtml-with>
This got me closer. ;) However, I thought it acquired the namespace of the randomly selected 'myZclass'. NOW, I am getting... Error Type: NameError Error Value: global name 'headline' is not defined
**"headline" is in the PropertySheet of 'myZclass'...which is called in 'myZclassDTMLmethod'. You are doing difficult stuff, too difficult to be described in a book for starters....
You should keep in mind that a DTML method only knows what is explicitly passed into it. The above passes essentially "_", the current namespace. But this does not contain your ZInstance. You have two options: <dtml-with expr="_.random.choice(objectValues('myZclass'))"> <dtml-var myZclassDTMLmethod> </dtml-with> This pushes your ZInstance onto the DTML namespace and thereby makes it avaiable in your "myZclassDTMLmethod". or <dtml-let zi="_.random.choice(objectValues('myZclass'))"> <dtml-var expr="zi.myZclassDTMLmethod(zi,_)"> </dtml-let> This way, you pass in the context as "client" argument. Dieter