Plone:如何将mixin类应用于标准ATFolder类

时间:2017-05-18 14:20:44

标签: plone plone-4.x archetypes

我的自定义基于Archetypes的内容对象有getThumbnailPath方法;它选择预览图像,将缩放后的副本放入文件系统(如果尚未更新),并返回类似/++thumbnails++/<image uid>.jpg的内容,以便Apache提供缩略图。将结果存储为列表视图的目录中的元数据字段,这应该非常有效:所有检查和扩展仅在重新计算元数据时完成,对于标准访问,不涉及Python线程。

但是,我确实需要某些文件夹的预览图像(例如,使用该文件夹中的第一个MyImage对象)。我可以将我的方法的特殊版本修改为ATFolder,但是注入我的mixin类可能会更清晰。这可能吗?

更新 Ulrich Schwarz向我指出了使用适配器和接口的可能性(可能都是一个?)。基于此,我目前的想法是:

  • 我的自定义类型和IThumbnailable都有实现的接口类ATFolder。它提供了getThumbnailPath方法,也许还支持数据。
  • 有一个适配器,可能称为thumbnail,它可能提供getThumbnailPath方法的实现。

缩略图选择逻辑

对于我自己的内容类型,我能够基于一小部分mixin类实现以下内容:

  1. 如果对象的架构包含image字段,并且该字段非空,请使用此图像:将其缩放版本存储到文件系统并返回访问它的路径。
  2. 否则,如果对象的方法getRawText返回包含<img>对象的src对象通过uid引用对象的文本,请找到此对象并返回结果它的getThumbnailPath方法。
  3. 对于文件夹,我想(目前通过猴子修补完成):

    1. 如果文件夹包含直接子项(MyImage个对象)的图像,请使用第一个(目录搜索,'sort_on': 'getObjPositionInParent')并返回其getThumbnailPath方法的结果。
    2. 如果文件夹中有标准页,请使用该页的getRawText
    3. 回到mixin类:

      1. 如果没有其他工作,请将路径返回到当前类型的标准缩略图。
      2. 因此,对于最终解决方案,我需要考虑是否应该维护我的小层次结构或检查每个对象。

0 个答案:

没有答案