Oliver Frommel wrote:
include a PythonScript in your zclass (or somewhere else) with the following code (name: findlogo; standard bindings):
try: getattr(context.pics, 'logo') # if logo is the name of the picture logo = context.pics.logo except AttributeError: logo = context.<fallbackdirectory>.pics.logo # in which fallback directory is your rootdir
return logo
yes, thank you very much! However I changed the PythonScript a bit to a) take a variable b) operate on strings, i.e. also return a string
PythonScript findimage, parameter "image":
try: getattr(context.pic, image) image = "pics/" + image except AttributeError: image = "dir/pics/" + image return image
why do you need to return it a string?
I call it from a DTML method like that:
<img src="<dtml-var "findimage('logo.gif')">">
yes, this is not nice, and I am not really content with it ..
how could I e.g. make your example work when using an image with a "normal" name, i.e. period and extension. I think I can hardly make all Zope end users (Designers, Editors ..) make switching from that to underscore naming!
getattr(context.pics, 'logo') # if logo is the name of the picture logo = context.pics.logo
thanks for your help
I changed my example to work with a 'normal' name and with a customizable 'default directory'. It will also return a url instead of an image. If you ask me, using <dtml-var "findlogo(imagename='somename' defaultdir='somedirectory')"> is easier for endusers/designers etc. than the verbose <img src="<dtml-var "findlogo(imagename='logo.jpg', defaultdir='somedirectory')">"> and the result is the same... Note that you could change the 'defaultdir' argument to a keyword argument. Note also that you could change the hardcoded 'pics' to another (keyword) argument. ------------ ## Script (Python) "findlogo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=imagename, defaultdir ##title= ## if not getattr(context.pics, imagename): directory = getattr(context, defaultdir) else: directory = context picsdir = getattr(directory, 'pics') logo = getattr(picsdir, imagename) return logo.absolute_url() ------------ hth Rik