如何设置TAL条件来检查文件类型,并相应呈现模板在Plone 4.1(How to set TAL

2019-10-17 04:41发布

如何使用TAL条件来检查文件类型,并呈现模板在Plone 4.1

我的文件预览模板渲染取决于文件扩展名。 如果文件扩展名是“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”等文件)

<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

Answer 1:

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>

这引入了一个新的<tal:block>元素定义ispdf布尔变量,通过一个python表达式确定。 然后,将两个变体是由接通或断开tal:condition基于该值是每个元素的属性TrueFalse



文章来源: How to set TAL condition to check the file type and accordingly render the template in Plone 4.1