我有一个文件夹敏捷内容类型,我有一个事件订阅者。创建内容类型后,我创建一个Collection,它根据几个参数显示容器中的子节点。创建集合后,我尝试将容器的默认页面设置为集合。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridView);
ImageView[][] imageViews = new ImageView[2][2];
for (int i=0;i<2;i++){
for (int j=0;j<2;j++){
imageViews[i][j] = new ImageView(MainActivity.this);
imageViews[i][j].setImageResource(R.mipmap.ic_launcher);
gridLayout.addView(imageViews[i][j]);
}
}
}
}
configure.zcml中的订阅者
def myContainerAdded(my_container, event):
#get container
#set advanced query for collection
#create collection with api.create
my_container.setDefaultPage(new_collection.id)
不幸的是,默认页面未完全设置。它只显示容器页面,但收集是在&#39;显示&#39;落下。 如果我单击&#34;将内容项更改为默认视图&#34;并选择该集合,它会将默认页面更改为集合。
早些时候,我正在使用&#34; setuphandler&#34;设置文件夹结构(而不是添加事件),并且setDefaultPage正在工作。我是否忘记了一步,因为我正在尝试通过一个事件?
我正在使用plone.4.3。
编辑:我也尝试过:
<subscriber
for="my.product.my_container.IMyContainer
zope.lifecycleevent.interfaces.IObjectAddedEvent"
handler=".events.myContainerAdded" />
编辑: 我找到了有趣的东西。我暂时在活动订阅者中注释了与集合相关的代码。我手动将集合添加到容器对象,然后将容器的默认页面设置为集合。容器的默认页面是集合。
也许有些东西没有被编入索引?
答案 0 :(得分:3)
事实上一切进展顺利,只是在创建基于敏捷的内容类型之后,人们会看到默认视图的网址,这意味着&#39; / view&#39;附加到项目的网址,该网址是默认视图方法的别名,此处解析为&#39; folder_listing&#39; -template。
为了快速解决这个问题,您可以在订阅者的方法中添加重定向到对象的网址,而不会在网址上附加任何视图名称:
event.REQUEST.RESPONSE.redirect(my_container.absolute_url())