1

Plone 4.1 で tal 条件を使用してファイル タイプをチェックし、テンプレートをレンダリングする方法

ファイル プレビュー テンプレートのレンダリングは、ファイル拡張子に依存します。ファイル拡張子が 'pdf' の場合、次のようなものを使用したいと思います:(TAL、TALES、METAL を使い始めたばかりです)

<tal:define="file_nm global string:${here/absolute_url}"
<tal:condition="file_nm.slice[-3:] = 'pdf'">

    <embed width="100%" height="100%" name="plug-in" tal:attributes="src string:${here/absolute_url}#" 
         draggable="false" onselectstart="false"  />

else use :(「pdf」以外のファイルの場合)

<IFRAME src="http://www.xyz.com" 
            tal:attributes="src string:${here/absolute_url}/rfpreview"
            ondragstart="false" onselectstart="false"
            width="100%" height="400" scrolling="auto" frameborder="0"></IFRAME>

カスタム ビュー:atreal.richfile.preview.interfaces.ipreview-atreal.richfile.preview.viewlet の完全なカスタム コード スニペットについて教えてもらえますか

4

1 に答える 1

3

TALステートメントは、既存のタグの属性です。名前空間プレフィックスを使用してダミー要素を導入できますtal:が、ステートメントのようなものは属性として表現する必要がありますdefinecondition

また、デフォルトのTALES式タイプはパス式ですが、Python式を使用する必要があります。python:それは問題ありませんが、プレフィックスを付けて指定する必要があります。

最後になりましたがglobal、絶対に必要な場合を除いて、使用しないでください。これは非常にまれです。定義された名前は、それらが定義されているXML要素のスコープ内に存在し、これらの外部に存在する必要はありません。

これが私が論理を表現する方法です:

<tal:block define="ispdf python:here.absolute_url().endswith('.pdf')">

    <embed width="100%" height="100%" name="plug-in" 
         tal:condition="ispdf"
         tal:attributes="src string:${here/absolute_url}#" 
         draggable="false" onselectstart="false"  />

    <iframe src="http://www.xyz.com" 
         tal:condition="not:ispdf"
         tal:attributes="src string:${here/absolute_url}/rfpreview"
         ondragstart="false" onselectstart="false"
         width="100%" height="400" scrolling="auto" frameborder="0"></iframe>

</tal:block>

これにより、Python式によって決定されるブール変数を定義するための新しい<tal:block>要素が導入されます。ispdf次に、2つのバリアントは、またはtal:conditionである値に基づいて、各要素の属性によってオンTrueまたはオフに切り替えられますFalse

于 2012-09-04T10:01:37.127 に答える