help! dtml-if question
Hi, I've tried to find a solution myself but now am stuck. I created a little "Blurb" product for a university department website so that faculty members can announce recent publications on the department's homepage. They create these ZClass instances in their own folders, and a DTML method in the top-level folder grabs and displays them at random. (I want to avoid using ZCatalog for the time being.) What the method does is randomly choose a faculty folder, and then randomly choose a Blurb instance within that folder. Here's the hack I came up with: <dtml-with Dept> <dtml-with Fac> <dtml-with Sites> <dtml-with "_.whrandom.choice(objectValues(['Folder']))"> <dtml-with "_.whrandom.choice(objectValues(['Blurb']))"> <dtml-var index_html> (end tags omitted) The problem is that this method will produce an Index Error when it comes across a folder that doesn't contain an instance of "Blurb" class. So I need to make the selection of a folder conditional on Zope's finding a Blurb in that folder. Here's what I tried after reading up: <dtml-with Dept> <dtml-with Fac> <dtml-with Sites> <dtml-with "_.whrandom.choice(objectValues(['Folder']))"> <dtml-if "_.has_key('Blurb')"> <dtml-with "_.whrandom.choice(objectValues(['Blurb']))"> <dtml-var index_html> </dtml-with> <dtml-else> Some default Blurb would appear. This method fails. Can someone help? Cheers, Anthony ~~~~~~~~~~~~~~~~ Anthony Brietz Monta Coordinator of Curricular Assessment & Academic Reporting Louisiana Board of Regents 150 Third Street, Suite 129 Baton Rouge, LA 70801-1389 225.342.4253, ext. 143 amonta@regents.state.la.us
Hi, Anthony how about: <dtml-if "_.len(objectValues(['Blurb'])) > 0"> Your _.has_key() (I think you meant _.hasattr()) statement was looking for something named "Blurb", not a thing of type"Blurb", so of course it failed. The objectValues(['atype']) statement returns a list of the things of the type, so checking for a non-zero length of the list will do what you need. -- Jim Washington Dr. Anthony Monta wrote:
Hi,
I've tried to find a solution myself but now am stuck. I created a little "Blurb" product for a university department website so that faculty members can announce recent publications on the department's homepage. They create these ZClass instances in their own folders, and a DTML method in the top-level folder grabs and displays them at random. (I want to avoid using ZCatalog for the time being.) What the method does is randomly choose a faculty folder, and then randomly choose a Blurb instance within that folder. Here's the hack I came up with:
<dtml-with Dept> <dtml-with Fac> <dtml-with Sites> <dtml-with "_.whrandom.choice(objectValues(['Folder']))"> <dtml-with "_.whrandom.choice(objectValues(['Blurb']))"> <dtml-var index_html>
(end tags omitted)
The problem is that this method will produce an Index Error when it comes across a folder that doesn't contain an instance of "Blurb" class. So I need to make the selection of a folder conditional on Zope's finding a Blurb in that folder. Here's what I tried after reading up:
<dtml-with Dept> <dtml-with Fac> <dtml-with Sites> <dtml-with "_.whrandom.choice(objectValues(['Folder']))"> <dtml-if "_.has_key('Blurb')"> <dtml-with "_.whrandom.choice(objectValues(['Blurb']))"> <dtml-var index_html> </dtml-with> <dtml-else> Some default Blurb would appear.
This method fails. Can someone help?
participants (2)
-
Dr. Anthony Monta -
Jim Washington