I assume this approach only works for plone 3.0 as that runs on a nice recent
zope 2.10 release and has a recent enough CMF. At least, that’s mostly my
experience: you’ll need pretty new stuff to get the most out of genericsetup
and so.
So: you’ve made a product and you’ve done it in lib/python instead of
Products. There’s got to be a way to register a skin directory without
filling your product’s __init__.py with lots of registration code. I found
the solution in plone.app.openid.
In your configure.zcml, add the cmf namespace and a registerDirectory
directive. I’m doing it for the plonehrm.jobperformance (not fully released yet) product:
<configure
...
xmlns:cmf="http://namespaces.zope.org/cmf"
...>
<.....>
<cmf:registerDirectory name="jobperformance"/>
</configure>
The only remaining thing is to add a skins.xml in your
profiles/default directory:
<object name="portal_skins">
<object name="jobperformance" meta_type="Filesystem Directory View"
directory="plonehrm.jobperformance:skins/jobperformance"/>
<skin-path name="*">
<layer name="jobperformance" insert-after="custom"/>
</skin-path>
</object>
That ought to do it!
Reinout van Rees: Registering skins in lib/python plone 3.0 products
Originally from Planet Plone
http://plonewars.com/2007/09/18/reinout-van-rees-registering-skins-in-libpython-plone-30-products/