2

私のploneページテンプレートには次のコードがあります:

<img 
tal:define="folderimagetitle python:context.getField('folderimagetitle').getAccessor(context)()"
tal:condition="folderimagetitle" 
src="" 
alt="" 
tal:replace="structure python:context.getWrappedField('folderimage').tag(context, alt=folderimagetitle, css_class='photo')" 
/>

基本的にはH1タグの横に画像を表示したいと思います。画像は正常に機能して表示されますが、テキストと位置合わせされていないフル画像サイズが表示されます。また、高さと幅の属性を追加するだけでは不十分です。これにより、画像のエッジが不揃いになり、縮尺が適切になりません。

Ploneで利用可能なデフォルトサイズの1つ、つまりリスト、アイコン、タイル、サム、ミニ、プレビュー、およびラージに縮小するにはどうすればよいですか?

4

2 に答える 2

5

「現代的な」方法は、plone.app.imagingを使用することです。

<img tal:define="scales context/@@images;
                 thumbnail python: scales.scale('image', width=64, height=64);"
     tal:condition="thumbnail"
     tal:attributes="src thumbnail/url;
                     width thumbnail/width;
                     height thumbnail/height" />

http://plone.org/products/plone.app.imaging/

于 2012-08-13T14:12:47.620 に答える
5

受け入れられた答えはほとんど完璧ですが、それがどのように機能するかについての追加のヒントがあります:

/ @@ imagesコンテキストは、どのオブジェクトタイプでもgettableですが、scales.scale()の最初のパラメーターはフィールド名であり、そのコンテキストで.getField(name)を使用してgettableにする必要があります。

したがって、たとえば、ビュー/画像上の画像のリストを公開するギャラリービューがある場合は、次を使用できます。

<li tal:repeat="image view/images">
<img tal:define="scales image/@@images;
                 img python: scales.scale('image', width=100, height=100);"
     tal:attributes="src img/url">
</li>

特に、イメージインスタンスを次のように渡すことはできないことに注意してください。

scales context/@@images; <--- Don't do this. You need the @@images for an Image
scales.scale(instance, width=10, height=10);

何らかの理由でTAL以外の言語でこれを行う必要がある場合トリックは、restrictedTraverse()を使用して「@@images」コンテキストを取得することです。

%if request.context.children.has(0, 'ATBlob'):
    <%
        # NB. The 'ATBlob' is the concrete Image instance
        image = request.context.children.nth(0, 'ATBlob')  
        scales = image.restrictedTraverse('@@images')
        scaled_image = scales.scale('image', width=100, height=100)
    %>
    ${scaled_image} 
%endif
于 2014-07-22T04:02:00.740 に答える