首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Plone - How can I setDefaultPage in a event subscriber?

Plone - How can I setDefaultPage in a event subscriber?
EN

Stack Overflow用户
提问于 2017-01-19 21:32:32
回答 1查看 104关注 0票数 3

我有一个folderish dexterity内容类型,还有一个活动订阅者。当创建内容类型时,我创建了一个Collection,它根据几个参数显示容器中的子对象。创建集合后,我尝试将容器的默认页面设置为该集合。

代码语言:javascript
复制
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中的订阅者

代码语言:javascript
复制
<subscriber
  for="my.product.my_container.IMyContainer
       zope.lifecycleevent.interfaces.IObjectAddedEvent" 
  handler=".events.myContainerAdded" />

不幸的是,默认页面没有完全设置。它只显示容器页面,但在“显示”下拉列表中选择了集合。如果我单击“将内容项更改为默认视图”并选择该集合,则会将默认页面更改为该集合。

早些时候,我使用"setuphandler“来设置文件夹结构(而不是添加事件),setDefaultPage正在工作。我是不是忘记了一个步骤,因为我正在尝试通过一个事件来执行此操作?

我正在使用plone.4.3。

编辑:我也尝试过:

代码语言:javascript
复制
my_container.default_page = new_collection.id

编辑:我发现了一些有趣的东西。我临时注释掉了事件订阅者中与集合相关的代码。我手动将该集合添加到容器对象中,然后将容器的默认页面设置为该集合。容器的默认页面是集合。

也许有些东西没有被正确索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-20 17:51:30

事实上,一切都很顺利,只是在创建了一个基于灵活性的内容类型之后,它将到达默认视图的URL,这意味着'/view‘被附加到项目的URL,它是default-view-method的别名,在这里解析为'folder_listing'-template。

为了快速克服这一问题,您可以在订阅者的方法中添加到对象URL的重定向,而不是将任何view-name附加到URL:

代码语言:javascript
复制
event.REQUEST.RESPONSE.redirect(my_container.absolute_url())
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41743054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档