如果您有一个文件夹,将显示更改为内容项,选择一个页面作为默认视图,并在文件夹对象上使用方法context.absolute_url_path(),它是不正确的。
在文件夹的上下文中以及调用此方法时:
context.absolute_url_path()
它将返回 / my-folder / my-default-page-object
文件夹上下文的absolute_url_path应该只返回 / my-folder 。
在设置默认页面时,是否有某种方法可以获取您所在对象的真实路径?
附加说明: 我试图从路径中减去context.getDefaultPage(),问题是plone站点对象(也就是root)上的getDefaultPage保持返回None,因为设置了默认页面,所以没有任何意义。我已经用plones开箱即用的Page dexterity对象和一个自定义灵巧对象进行了确认。
我正在运行Plone 5.
答案 0 :(得分:7)
在您要描述的情况下,上下文是默认页面对象 - 而不是它包含文件夹。你想要"规范"的网址路径。 object,它是当前对象,除非该对象是默认视图。在默认视图的情况下,它是包含文件夹。
要获取规范对象的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之后,而不仅仅是它的路径组件,请使用absolute_url而不是absolute_url_path。