2012-09-04 1 views
1

Как использовать условие тал, чтобы проверить тип файла и сделать шаблон в Plone 4,1Как установить условие TAL проверить тип файла и, соответственно, делают шаблон в Plone 4.1

Мой файл рендеринга шаблона предварительного просмотра зависит от расширение файла. Если расширение файла «PDF», я хотел бы использовать что-то вроде этого: (только начал работать с ЗПУ, СКАЗКИ, 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

заявления

ответ

3

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, определяется выражением питона. Затем два варианта включаются или выключаются атрибутами tal:condition для каждого элемента на основе этого значения: True или False.

+0

Bang on Thx много, но как отключить событие mouseover в этом окне для предварительного просмотра pdf, в котором отображаются значки для печати и сохранения. Мне это нужно отчаянно. Thanx еще раз – user956424

+0

@ user956424: Это отдельный вопрос в целом, один, на который я не знаю ответа. Я вообще избегаю этого. :-P –

+0

Я подниму его отдельно – user956424

 Смежные вопросы

  • Нет связанных вопросов^_^