3

Plone有一个很好的 hack,它消除了 Zope2 附带的无聊的Zope 快速入门页面。它改变了这一点:

在此处输入图像描述

进入这个:

在此处输入图像描述

相关代码位于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呈现相同的模板?

4

1 回答 1

5

同一个 ZCML 文件注册了一个AppTraverser适配器;此适配器使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类定义

于 2013-05-27T23:32:34.113 回答