如何在列表视图中显示基于敏捷的Plone内容类型的图像?

时间:2011-09-20 13:52:28

标签: plone dexterity

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

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

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

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

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

答案 3 :(得分: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