From: "Petter Holmström" <petter.holmstrom@abo.fi>
Let's say I write a guestbook product. This product has a default user interface which means that I can, if I wish, just add a guestbook product to the customer's folder and that's it. Unfortunately we're seldom that lycky. Perhaps the customer wants the guestbook in another language, or "embedded" into his/her original website. To do this I'll have to override the default presentation pages somehow. The management screens can stay as they were. What is the best approach?
Well, step one is to make sure that all the logic is the part of the product python classes, and that no logic is in the DTML. A godo way of doing this is using ZPT where putting anything else than display logic in the templates automatically becomes painful. :-) Step two is to make sure you have a good flexible API to call the logic. After that, step three is to make the display methods (DTML or ZPT). The customer adaptation is then just a question of making new templates. Step four is optional, and that is to make parts reusable, but still replaceable. This is hard to do in pure Zope, and requires some sort of "templating system". CMF's portal_skins is one. //Lennart