Plone中的IPloneSiteRoot和ISiteRoot有什么区别?

时间:2011-06-01 00:00:43

标签: plone zope3

我正在使用Plone 4.1,我只是想知道Products.CMFPlone.interfaces.IPloneSiteRoot和Products.CMFCore.interfaces.ISiteRoot之间的区别。如果我想注册一个zope-3风格的视图,我应该注册哪个视图?

2 个答案:

答案 0 :(得分:7)

每当我想使用站点根目录时,我通常最终会使用plone.app.layout.navigation.interfaces.INavigationRoot中的INavigationRoot。

INavigationRoot由Plone站点对象提供,但它也将由任何子站点的导航根或多语言站点中的顶级文件夹提供。特别是在多语言网站中,用户永远不会导航或查看实际的网站根目录,因此他们无法使用附加到其上的任何功能。

ISiteRoot仅适用于导出导入处理程序或其他内部逻辑,但不适用于任何最终用户可见功能。

答案 1 :(得分:6)

IPloneSiteRoot是一种特定的ISiteRoot。 IPloneSiteRoot由Plone站点的根提供,而ISiteRoot由任何CMF门户提供。如果您的产品仅用于Plone,那么您使用哪个界面并不重要。如果您希望它可以与其他基于CMF的应用程序一起使用,那么请使用ISiteRoot。

坦率地说,我通常会选择ISiteRoot,因为它的输入时间较短。 :)