自定义模板集合

时间:2014-11-19 12:08:04

标签: plone dexterity

我想创建一个页面模板,列出特定值为true的所有特定内容类型。

我认为最好的方法是为集合制作自定义页面模板。

所以我在这里按照这些说明操作: http://www.uwosh.edu/ploneprojects/docs/how-tos/a-minimalist-view-for-collections

但我收到错误"宏扩展失败"如下所述: Page template Macro expansion failed

然而,那里的答案对我来说没有意义。我不确定在哪里定义宏,是否在类型的.py文件中?

这两个链接的组合是描述整个过程还是更多? 我在其他地方完整描述了这个过程吗?

或者我是否以错误的方式思考这个问题,我是不是应该使用集合,只是对进行排序的内容类型的新视图?

1 个答案:

答案 0 :(得分:2)

在将教程的示例代码粘贴到portal_skins / custom / collection_minimal_view后,您正在收到该错误消息,对吗?

Screenshot of error message

那是因为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>