我想创建一个页面模板,列出特定值为true的所有特定内容类型。
我认为最好的方法是为集合制作自定义页面模板。
所以我在这里按照这些说明操作: http://www.uwosh.edu/ploneprojects/docs/how-tos/a-minimalist-view-for-collections
但我收到错误"宏扩展失败"如下所述: Page template Macro expansion failed
然而,那里的答案对我来说没有意义。我不确定在哪里定义宏,是否在类型的.py文件中?
这两个链接的组合是描述整个过程还是更多? 我在其他地方完整描述了这个过程吗?
或者我是否以错误的方式思考这个问题,我是不是应该使用集合,只是对进行排序的内容类型的新视图?
答案 0 :(得分:2)
在将教程的示例代码粘贴到portal_skins / custom / collection_minimal_view后,您正在收到该错误消息,对吗?
那是因为Zope试图预测你正在做什么,但它不知道变量'context'会是什么,并且不能确定'context'会有'standard_view'属性。
无论如何,如果您忽略错误消息,并按照本教程的其余部分进行操作,新视图确实可以正常工作。
但是,最好的做法是将长期自定义设置保留在自定义文件夹中,或者真的是portal_skins。更好的方法是将模板放在一个包中,并在ZCML中注册:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:zcml="http://namespaces.zope.org/zcml"
i18n_domain="plone">
<browser:page
name="minimal_view"
permission="zope2.View"
for="plone.app.collection.interfaces.ICollection"
template="collection_minimal_view.pt"
/>
<browser:menuItems
for="plone.app.collection.interfaces.ICollection"
menu="plone_displayviews">
<browser:menuItem
title="Minimal view"
action="minimal_view"
/>
</browser:menuItems>
</configure>