Plone 如何使用默认视图集获取文件夹的绝对路径?

Plone 如何使用默认视图集获取文件夹的绝对路径?,plone,Plone,如果您有文件夹,请将显示更改为内容项,选择一个页面作为默认视图,并使用文件夹对象上的方法context.absolute\u url\u路径,这是不正确的 在文件夹的上下文中以及调用此方法时: context.absolute_url_path() 它将返回/my folder/my default page对象 文件夹上下文的绝对路径应该只返回/my folder 当设置了默认页面时,是否有办法获取您所在对象的真实路径 补充说明: 我试图从路径中减去context.getDefaultPa

如果您有文件夹,请将显示更改为内容项,选择一个页面作为默认视图,并使用文件夹对象上的方法context.absolute\u url\u路径,这是不正确的

在文件夹的上下文中以及调用此方法时:

context.absolute_url_path() 
它将返回/my folder/my default page对象

文件夹上下文的绝对路径应该只返回/my folder

当设置了默认页面时,是否有办法获取您所在对象的真实路径

补充说明: 我试图从路径中减去context.getDefaultPage,问题是plone站点对象(也称为root)上的getDefaultPage一直返回None,这是没有意义的,因为设置了默认页面。我已经确认了plones开箱即用页面灵巧对象和自定义灵巧对象


我正在运行Plone 5。

在您描述的情况下,上下文是默认的页面对象,而不是包含文件夹的对象。您需要规范对象的url路径,该对象是当前对象,除非该对象是默认视图。在默认视图情况下,它是包含文件夹

要获取规范对象的url路径,请使用plone_context_state视图:

context_state = getMultiAdapter((context, request), name=u'plone_context_state')
canonical_object = context_state.canonical_object()
canonical_url_path = canonical_object.absolute_url_path()
如果您使用的是页面模板,则可能是:

context/@@plone_context_state/canonical_object/absolute_url_path
而且,如果您要查找URL,而不仅仅是它的路径组件,请使用绝对URL而不是绝对URL路径