获取设置为显示的项目

Get the item set as display

我有一个容器 x,其中 Link 项 y 设置为显示。 如果我知道 x,如何以编程方式访问 y?

我试过:getattr(x, 'default_page', None),但一直 returns None。

default_page = getattr(x, 'default_page', None) 就是答案。但请确保您有一个 x 的对象。

我的错误是我在查询中尝试了 b.getObject().absolute_url() 而不是 b.getObject()

通过使用 getattr,您可以覆盖关于如何确定对象(项目或容器)的默认页面的 plone 默认行为。

Plone 中的内容对象继承BrowserDefaultMixinwhich provides the functionality of getting the default page of a object

mixin 使用的 mixin, respectively a utility 提供了所需的方法 getDefaultPage

>>> x = b.getObject()
>>> x.getDefaultPage()
...

这将 return 正确 content objectview 取决于对象上的配置、FTI 和视图本身等等。

查看 get_default_page 了解更多详情。

甚至更好... 这种获取默认页面的规范方式也有助于快速找到您的问题,因为该方法会进行某些检查以确保传递的对象提供正确的“功能”。字符串不会通过这些检查。