当前位置 : 主页 > 网页制作 > HTTP/TCP >

plone – 如何获得具有默认视图集的文件夹的absolute_url_path?

来源:互联网 收集:自由互联 发布时间:2021-06-16
如果您有一个文件夹,将显示更改为内容项,选择一个页面作为默认视图,并在文件夹对象上使用方法context.absolute_url_path(),它是不正确的. 在文件夹的上下文中以及调用此方法时: context.
如果您有一个文件夹,将显示更改为内容项,选择一个页面作为默认视图,并在文件夹对象上使用方法context.absolute_url_path(),它是不正确的.

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

context.absolute_url_path()

它将返回/ my-folder / my-default-page-object

文件夹上下文的absolute_url_path应该只返回/ my-folder.

有没有办法在设置默认页面时获取您所在对象的真实路径?

补充说明:
我试图从路径中减去context.getDefaultPage(),问题是plone站点对象(也就是根)上的getDefaultPage保持返回None,因为设置了默认页面,所以没有任何意义.我已经用plones开箱即用的Page dexterity对象和一个自定义灵巧对象进行了确认.

我正在运行Plone 5.

在您描述的情况下,context是默认的页面对象 – 而不是它包含文件夹.您需要“规范”对象的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之后,而不仅仅是它的路径组件,请使用absolute_url而不是absolute_url_path.

网友评论