3

Dexterity ベースのコンテンツ タイプ (Plone 4.2) を含むフォルダーのバッチ リスト ビューを作成する必要があり、そのイメージも表示されます。オブジェクトの画像を取得する 2 つの方法を見つけました。

方法 1:

テンプレート内 (バッチ内)

         ...
         <div tal:define="item_object item/getObject;">
              <img tal:condition="exists:item_object/@@images/image1"
                   tal:replace="structure item_object/@@images/image1/mini" />
         </div>

方法 2:

ビュークラスで

def get_item_image(self, item):
    itemobj = item.getObject()
    scales = getMultiAdapter((itemobj, self.request), name='images')
    scale = scales.scale('image1', scale='mini')
    imageTag = None
    if scale is not None:
       imageTag = scale.tag()
    return imageTag

そしてテンプレで

         ...
         <div tal:define="item_image python:view.get_item_image(item)">
              <img tal:condition="item_image"
                   tal:replace="structure item_image" />
         </div>

オブジェクトを起こさないための最良の方法 (もしあれば) を教えてくれる人はいますか?

4

2 に答える 2

2

plone.app.imaging画像スケールにアクセスするには、いずれにしても現在のオブジェクトを起動する必要があると思います(結局、それらはオブジェクト内に保存されます)。そのため、オブジェクトのウェイクアップ フリー リストを生成するのは簡単ではありません。

良いニュースは、Dexterity コンテンツ タイプは Archetypes コンテンツ タイプよりも軽量でありfolder.contentItems()、テンプレートで反復処理を行って生のリストを作成してもそれほどコストがかからないことです。実際、カタログ クエリを使用するよりも高速である可能性があります。したがって、オブジェクトの起動について心配する必要はなく、plone.app.imagingメソッドを使用するだけです。

https://github.com/plone/plone.app.imaging

于 2013-02-07T19:55:48.433 に答える
1

You effectively have to wakeup the object and get the field from the schema object.

<tal:def tal:define="item_object python:item.getObject()">
    <tal:if tal:condition="python:hasattr(item_object, 'Schema')">
        <tal:d2 tal:define="image python:item_object.Schema().getField('image');
                        image python:image and image.getAccessor(item_object)();"
            tal:condition="image">
            <img id="image-rubrique" alt="" tal:attributes="src string:${item_object/absolute_url}/image_mini" />
        </tal:d2>
    </tal:if>
</tal:def>
于 2013-02-08T07:55:22.623 に答える