我正在使用Plone 4.1,我只是想知道Products.CMFPlone.interfaces.IPloneSiteRoot和Products.CMFCore.interfaces.ISiteRoot之间的区别。如果我想注册一个zope-3风格的视图,我应该注册哪个视图?
答案 0 :(得分:7)
每当我想使用站点根目录时,我通常最终会使用plone.app.layout.navigation.interfaces.INavigationRoot中的INavigationRoot。
INavigationRoot由Plone站点对象提供,但它也将由任何子站点的导航根或多语言站点中的顶级文件夹提供。特别是在多语言网站中,用户永远不会导航或查看实际的网站根目录,因此他们无法使用附加到其上的任何功能。
ISiteRoot仅适用于导出导入处理程序或其他内部逻辑,但不适用于任何最终用户可见功能。
答案 1 :(得分:6)
IPloneSiteRoot是一种特定的ISiteRoot。 IPloneSiteRoot由Plone站点的根提供,而ISiteRoot由任何CMF门户提供。如果您的产品仅用于Plone,那么您使用哪个界面并不重要。如果您希望它可以与其他基于CMF的应用程序一起使用,那么请使用ISiteRoot。
坦率地说,我通常会选择ISiteRoot,因为它的输入时间较短。 :)