如果您有一个文件夹,将显示更改为内容项,选择一个页面作为默认视图,并在文件夹对象上使用方法context.absolute_url_path(),它是不正确的. 在文件夹的上下文中以及调用此方法时: context.
在文件夹的上下文中以及调用此方法时:
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.