IPublishTraverse subgraph - without 'view'

For Dexterity content types I was able to achieve that by registering an adapter to zope.publisher.interfaces.browser.IBrowserRequest, overriding the default adapter plone.dexterity.browser.traversal.DexterityPublishTraverse.

In traversal.py:

from plone.dexterity.browser.traversal import DexterityPublishTraverse
from zope.component import adapter
from zope.publisher.interfaces.browser import IBrowserRequest

@adapter(IMyContentType, IBrowserRequest)
class MyContentTypePublishTraverse(DexterityPublishTraverse):

    def publishTraverse(self, request, name):
        u"""Override `FSConnectorPublishTraverse`."""
        try:
            return DexterityPublishTraverse.publishTraverse(self, request, name)
        except AttributeError:
            # Do your thing here.

And in configure.zcml:

<adapter factory=".traversal.MyContentTypePublishTraverse" />
2 Likes