On 12/5/03 11:27 AM, "J. Cameron Cooper" <jccooper@jcameroncooper.com> wrote:
Lennart Regebro wrote:
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.
The CMF skin system (Filesystem Directory View) is available outside CMF in the FileSystemSite product. That seems like the right way to do skinning to me.
I haven't integrated the full cmf skinning mechanism in filesystemsite as it entails architecture/instance space requirements for sites. currently filesystemsite is based purely based on fs directory views for managing site code/presentation on the fs. -kapil