在列表视图中显示基于敏捷的Plone内容类型图像的最佳方法是什么?
假设我有一个基于Dexterity的内容对象的文件夹,它提供了一个图像字段,我想列出对象(作为目录大脑)及其图像。可以通过调用其绝对URL来显示列表中的图像:
<img src="" tal:attributes="src string:${item/getURL}/@@images/image/thumb" />
但是,如果图像不存在,Plone会引发错误,我没有看到检查页面模板中是否存在图像的好方法。我们显然不想唤醒列表的对象,查找图像。
我是否必须在目录中创建图像元数据列,或者是否有更好的解决方案我看不到?
答案 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