Tom,
Here is how we do it, and I know you know it can be done this way. But it might be news to someone else:
We have implemented the different boxes as <include> "widgets", which is made up of tcl/adp pairs that perform specific tasks like showing a search form or a "recent postings" listing.
They are called from a central adp template or the default master, for instance...
The widgets that are supposed to have a pretty box surrounding them in turn call in a "box-master template" by including a <master src="box-master"> at the top of the adp page.
It's very easy to make a few different box templates and pass various parameters to them to control the title, color, etc.
For example:
<include src="/widgets/postings" title="Recent Postings" bordercolor="#cccccc">
The widget's adp page passes the parameters "title" and "bordercolor" along to the "widget template" (box-master.adp in this case).
At the top of box-master.adp:
<master src="box-master">
<property name=title>@title@</property>
<property name=bordercolor>@bordercolor@</property>
<multiple name=recent-postings>
<li>@posting_title@</li>
</multiple>
I am curios to hear if there are benefits of creating custom templating tags compared to this method