如何设置TAL条件以检查文件类型,并相应地渲染Plone 4.1上的模板

2024-05-23 13:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

PLONE4.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"  />

否则使用:(用于“pdf”以外的文件)

^{pr2}$

是否有人可以指导我自定义视图的完整自定义代码段:atreal.richfile.preview.接口.ipreview-atreal.richfile.preview.viewlet


Tags: 文件模板falseurlstringherepdfpreview
1条回答
网友
1楼 · 发布于 2024-05-23 13:40:27

TAL语句是现有标记上的属性。您可以使用tal:名称空间前缀引入伪元素,但是像define和{}这样的语句仍然需要表示为属性。在

另外,默认的TALES表达式类型是path expressions,但是您希望使用python表达式。这很好,但是您需要用python:前缀来指定它们。在

最后但并非最不重要的是,除非绝对必须使用global,否则不要使用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>

这将引入一个新的<tal:block>元素来定义由python表达式确定的ispdf布尔变量。然后,根据每个元素上的tal:condition属性,基于True或{}的值来打开或关闭这两个变量。在

相关问题 更多 >