Hi Derek,

--On Mittwoch, Oktober 13, 2010 06:35:47 -0700 derek
<[email protected]> wrote:

> Is it possible to override just a template for a widget, without
> creating a whole new Widget, WidgetFactory, Field and associated
> interfaces?  I have whole modules full of empty classes just to get to
> a special template, which it seems I ought to be able to do with a
> <z3c:objectWidgetTemplate> directive , but no matter how I try I can't
> get no satisfaction.
>
> In my zcml, I have:
>
>     <z3c:objectWidgetTemplate
>         mode="display"
>         template="templates/SpeciesList.pt"
>         widget="z3c.form.interfaces.IMultiWidget"
>         schema="zope.schema.interfaces.IList"
>        />

I've not used the directive, but from the documentation "schema" is the
schema provided by the object, not the interface of the field:

If you have:

class ISpeciesData(...):
    speciesList = schema.List(...)

you give your.package.interfaces.ISpeciesData to the "schema=" attribute
and your template will be picked up by all MultiWidgets displayed for a
field from ISpeciesData.

You can make the registration more specific with the other attributes
available for z3c.widgetTemplate, like "layer", "field" of "view".
"view=...IDistributionView" alone should work to overwrite the multiwidget
template for this view.

..Carsten
_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to