One approach might be to create a generic dtml (or zpt) template that has several placeholders (in the form of <dtml-var> or tal:replace) for the areas of the form that will vary.
Then each subclass can override what goes in these placeholders if it chooses. Something like: class A(Acquisition.Implicit): main = DTMLFile('foo', globals()) sect1 = DTMLFile('Asect1', globals()) sect2 = DTMLFile('Asect2', globals()) class B(A): sect1 = DTMLFile('Bsect1', globals()) class C(B): sect2 = DTMLFile('Csect2', globals()) class D(A): sect2 = DTMLFile('Dsect2', globals()) where main.dtml looks like: <dtml-var standard_html_header> ... <dtml-var sect1> ... <dtml-var sect2> ... <dtml-var standard_html_footer> The DTMLFile should acquire the correct version of sect1 and sect2 from its parent instance above. Asect1.dtml, Asect2.dtml, Bsect1.dtml, Csect2.dtml and Dsect2.dtml would all be separate files. hth, Casey On Wednesday 17 July 2002 05:50 pm, Ross Boylan wrote: > I have a product with a number of classes that have subclasses. It > seems natural to make the screens for the subclasses by extending > those of the superclass. Can anyone suggest a good way to do that? > > The naive approach is that I have a manage_edit_A.dtml that gives a > management screen for A. If B subclasses A, I create > manage_edit_B.dtml by copying from the first file and then fiddling > with it. Obviously, it would be desirable for a change in A to only > require changing a single file. > > I would prefer a more elegant approach. Perhaps I can define some > method in A that the dtml will reference, and then B can override the > method to add some extra stuff (the method would return a DTML > snippet). > > First, I'm not exactly sure how to pick up the method from the DTML. > Second, I'm not sure if this is the best solution. For one thing, I > would prefer to keep all my dtml in separate files, rather than > defining it into my methods. > > Any suggestions? > > P.S. I'd like to thank Toby Dickenson, Casey Duncan, and R. David > Murray for their very helpful responses to my previous question. > > > _______________________________________________ > Zope-Dev maillist - [EMAIL PROTECTED] > http://lists.zope.org/mailman/listinfo/zope-dev > ** No cross posts or HTML encoding! ** > (Related lists - > http://lists.zope.org/mailman/listinfo/zope-announce > http://lists.zope.org/mailman/listinfo/zope ) > _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )