Как установить условие TAL для проверки типа файла и соответственно отрисовки шаблона в Plone 4.1
Как использовать условие 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
1 ответ
Операторы TAL являются атрибутами существующих тегов. Вы можете ввести фиктивные элементы с tal:
префикс пространства имен, но операторы вроде define
а также condition
надо выражать как атрибуты еще.
Кроме того, типом выражения 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
атрибуты каждого элемента на основе этого значения, являющегося True
или же False
,