5

在列表视图中显示基于 Dexterity 的 Plone 内容类型的图像的最佳方式是什么?

假设我有一个包含基于 Dexterity 的内容对象的文件夹,这些对象提供了一个图像字段,我想将这些对象(作为目录大脑)连同它们的图像一起列出。可以通过调用它们的绝对 URL 来显示列表中的图像:

<img src="" tal:attributes="src string:${item/getURL}/@@images/image/thumb" />

但是,如果图像不存在,Plone 会引发错误,而且我看不到检查图像是否存在于页面模板中的好方法。我们显然不想唤醒列表中的对象来查找图像。

我是否必须在目录中创建图像元数据列,或者是否有更好的解决方案我没有看到?

4

4 回答 4

5

只要正确批处理,我就不会太担心唤醒列表中的对象。如果您使用 plone.app.textfield 和 plone.namedfile 中的字段,那么大数据将保存在单独的持久对象中,因此主要内容项对象相对轻量级。当然,如果您想确保它不会对您的情况造成伤害,请进行自己的基准测试。

于 2011-09-20T17:33:34.797 回答
4

在 Professional Plone 4 Development(我相信第 10 章)中有一个如何做到这一点的秘诀。不幸的是,我真的不记得现在该怎么做。:)

于 2011-09-20T15:00:39.490 回答
0

在 portal_catalog 中创建一个元数据,您将在其中存储有效图像的路径。创建一个同名的python脚本,它将检查对象是否有图像,如果没有图像,则返回默认图像。

于 2011-09-21T07:52:02.047 回答
0

检查图像字段的示例是可用的:

class product(grok.View):
    grok.context(IDexterityContent)
    grok.require('zope2.View')
    grok.name('view')

    def update(self):
        """
        """
        # Hide the editable-object border
        context = self.context
        request = self.request
        request.set('disable_border', True)


    #brain come from contained image field 's object
    def isImageAvalable(self,brain=None):
        """判断图片字段是否有效"""
        try:
            if brain is None:
                image = self.context.image.size
            else:
                 image = brain.getObject().image.size

            return (image != 0)

        except:
            return False
于 2012-09-02T00:02:27.350 回答