Plone - 如何在事件订阅者中设置默认页面?
Plone - How can I setDefaultPage in an event subscriber?
我有一个文件夹灵巧的内容类型,我有一个事件订阅者。创建内容类型时,我创建了一个 Collection,它根据几个参数显示容器中的子项。创建集合后,我尝试将容器的默认页面设置为集合。
def myContainerAdded(my_container, event):
#get container
#set advanced query for collection
#create collection with api.create
my_container.setDefaultPage(new_collection.id)
configure.zcml
中的订阅者
<subscriber
for="my.product.my_container.IMyContainer
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".events.myContainerAdded" />
很遗憾,默认页面未完全设置。它仅显示容器页面,但集合 select 在 'Display' 下拉列表下编辑。
如果我单击 "Change content item as default view" 和 select 集合,它确实会将默认页面更改为集合。
早些时候,我使用 "setuphandler" 设置文件夹结构(与添加事件相反),并且 setDefaultPage 正在运行。自从我通过活动尝试此操作后,我是否忘记了一个步骤?
我正在使用 plone.4.3.
编辑:我也尝试过:
my_container.default_page = new_collection.id
编辑:
我发现了一些有趣的东西。暂时把事件订阅者中集合相关的代码注释掉了。我手动将集合添加到容器对象,然后将容器的默认页面设置为集合。容器的默认页面是集合。
也许有些东西没有正确编入索引?
其实一切都很顺利,只是创建了一个Dexterity-based content-type之后,会登陆default-view的URL,意思是'/view ' 附加到项目的 URL,这是 default-view-方法的别名,此处解析为 'folder_listing'-模板。
为了快速解决这个问题,您可以在订阅者的方法中添加一个指向对象 URL 的重定向,而无需将任何 view-name 附加到 URL:
event.REQUEST.RESPONSE.redirect(my_container.absolute_url())
我有一个文件夹灵巧的内容类型,我有一个事件订阅者。创建内容类型时,我创建了一个 Collection,它根据几个参数显示容器中的子项。创建集合后,我尝试将容器的默认页面设置为集合。
def myContainerAdded(my_container, event):
#get container
#set advanced query for collection
#create collection with api.create
my_container.setDefaultPage(new_collection.id)
configure.zcml
中的订阅者<subscriber
for="my.product.my_container.IMyContainer
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".events.myContainerAdded" />
很遗憾,默认页面未完全设置。它仅显示容器页面,但集合 select 在 'Display' 下拉列表下编辑。 如果我单击 "Change content item as default view" 和 select 集合,它确实会将默认页面更改为集合。
早些时候,我使用 "setuphandler" 设置文件夹结构(与添加事件相反),并且 setDefaultPage 正在运行。自从我通过活动尝试此操作后,我是否忘记了一个步骤?
我正在使用 plone.4.3.
编辑:我也尝试过:
my_container.default_page = new_collection.id
编辑: 我发现了一些有趣的东西。暂时把事件订阅者中集合相关的代码注释掉了。我手动将集合添加到容器对象,然后将容器的默认页面设置为集合。容器的默认页面是集合。
也许有些东西没有正确编入索引?
其实一切都很顺利,只是创建了一个Dexterity-based content-type之后,会登陆default-view的URL,意思是'/view ' 附加到项目的 URL,这是 default-view-方法的别名,此处解析为 'folder_listing'-模板。
为了快速解决这个问题,您可以在订阅者的方法中添加一个指向对象 URL 的重定向,而无需将任何 view-name 附加到 URL:
event.REQUEST.RESPONSE.redirect(my_container.absolute_url())