如何在Zope2应用程序根目录中(在Plone中)呈现plone-overview.pt模板?

时间:2013-05-27 23:26:38

标签: plone zope

Plone有一个很好的黑客可以消除Zope2附带的无聊的 Zope Quickstart 页面。它改变了这个:

enter image description here

进入这个:

enter image description here

相关代码位于Products/CMFPlone/browser/admin.zcmlhttps://github.com/plone/Products.CMFPlone/blob/master/Products/CMFPlone/browser/admin.zcml#L35):

  <browser:page
      for="OFS.interfaces.IApplication"
      name="plone-overview"
      class=".admin.Overview"
      permission="zope.Public"
      template="templates/plone-overview.pt"
      />

这就解释了为什么http://localhost:8080/plone-overview呈现了plone-overview模板,但为什么/如何应用程序根目录http://localhost:8080呈现相同的模板?

1 个答案:

答案 0 :(得分:5)

同一个ZCML文件注册AppTraverser adapter;此适配器将OFS.interfaces.IApplication对象调整为IRequest以拦截遍历。

IRequest适配器publishTraverse()方法中,当遍历index_html名称时,适配器返回相同的plone-overview视图:

def publishTraverse(self, request, name):
    if name == 'index_html':
        view = queryMultiAdapter((self.context, request),
                    Interface, 'plone-overview')
        if view is not None:
            return view
    return DefaultPublishTraverse.publishTraverse(self, request, name)

请参阅AppTraverser class definition