具有图像属性的敏捷容器类型

时间:2016-03-26 10:45:43

标签: plone

环境:Plone 4.3.7,plone.app.contenttypes 1.1b5,eea.facetednavigation 8.7

我有一个自定义的敏捷容器类型Monument,它仅包含图像项。我的目的是让Monument containing Image items表现得像News Item with the Image field。如果纪念碑内有多个图像项目,则第一个图像项目或随机图像项目返回。

这样,我可以用他们的图像显示纪念碑项目作为eea.facetednavigation视图的缩略图。

仅供参考,eea.facetednavigation / views / preview-item.pt中有3个案例显示缩略图:

is_namedimage python:getattr(getattr(context, 'image', None), 'getImageSize', None) is not None;
image_thumb exists:context/image_thumb;
image_tag python:getattr(context, 'tag', None)"

enter image description here

plone.app.discussion/interfaces.py的例子激励着我。所以我尝试以下方法:

models/monument.xml

<schema>
...
 <field name="image"
  type="plone.namedfile.field.NamedBlobImage">
  <title i18n:translate="">Image</title>
  <readonly>True</readonly>
 </field>
...
</schema>

content.py

@implementer(IMonument)
class Monument(Container):
    """Container Subclass for Monument
    """

    @property
    def image(self):
        catalog = getToolByName(self, 'portal_catalog')
        path = '/'.join(self.getPhysicalPath())
        brain = catalog(path={"query": path}, portal_type=['Image'])
        obj = brain[0].getObject()
        return obj.image

但是,似乎Monument项目没有相应的image属性。我正朝着正确的方向前进吗?任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以将MonumentImageBehavior用于Monument-Foldertype吗?在profiles / default / types / monument.xml中,如果需要图像字段,请添加此项。 然后,您可以为Monument注册IObjectModifiedEvent并在事件中操作图像字段。

<?xml version="1.0"?>
<object name="Monument" meta_type="Dexterity FTI">
  <property name="behaviors" purge="False">
    <element value="plone.app.contenttypes.behaviors.leadimage.ILeadImage"/>
  </property>
</object>