打字稿-仅在使用URL

时间:2018-07-04 15:17:00

标签: typo3 typoscript templavoila

我正在使用TemplavoilàPlus,我有一个由用户填写的名为field_title的字段。 我使用此字段通过Typoscript对象路径为FCE的其他字段创建URL / HTML。

常量:

file = fileadmin/datasheets/|.pdf

设置:

lib.field_datasheet = TEXT
lib.field_datasheet {
 field = field_title
 wrap = <a href="{$file}"></a>
}

问题是,仅当文件/ URL存在时,我才想这样做。 首先,我想检查一下我创建的URL是否未链接到404页面。 然后,我认为检查文件大小是否为0会更容易。 经过两天的工作,到处查看后,我意识到这些解决方案都不容易...

我认为我有一些答案,例如使用stdWrap.rawUrlEncodefile:current:sizeif.isTrue.dataFILE等,但是显然,Typoscript不是针对初学者的,并且我似乎找不到如何正确排列所有内容,以及如何正确使用所有这些内容。

我认为我可以使用类似的方法来解决这种情况:

if.isTrue < .10 #.10 containing the size of the file
if.value = 0

但是真正困难的部分是从我使用Typoscript创建的URL中获取文件大小。 我很漂亮,肯定有一种方法只能对Typoscript进行处理,因为我知道一个人可以从其uid中获取文件的大小…

或者也许我应该坚持检查该网址是否未指向404页面。 也许有一个我没想到的简单解决方案!

任何帮助将不胜感激,如果这个问题太容易解决,对不起,非常感谢您阅读本文! =)

编辑:我正在使用Typo3 7.6

3 个答案:

答案 0 :(得分:2)

您可以为此使用文件链接。未经测试,应该是这样的:

lib.field_datasheet = TEXT
lib.field_datasheet {
  field = field_title
  wrap = |.pdf
  filelink {
    path = fileadmin/datasheets/
    file.field = field_title
  }
}

不确定如果文件不存在该怎么办。它可能什么也不显示,在这种情况下,您可以使用ifEmpty.field = field_title仅显示文本。

有关文件链接的更多信息:https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Filelink.html

答案 1 :(得分:1)

为什么不让TYPO3决定文件是否存在,值得建立链接?

您的问题可能是您没有什么可以联系的。 (空的A标签)

我会尝试:

常量:

filePath = fileadmin/datasheets/|.pdf

设置:

lib.field_datasheet = TEXT
lib.field_datasheet {
   // use the 'filename' as text to be linked
   field = field_title
   // now build the link:
   typolink.parameter {
       field = field_title
       wrap = {$filePath}|
   }
}

答案 2 :(得分:1)

感谢鲁迪的回答,我已经能够解决我的问题。 为了对他人有用,这是我使用过的Typoscript的一部分:

lib.field_datasheet = TEXT
lib.field_datasheet {
  value {
    field = field_title
    wrap = |.pdf
    }

  filelink {
    path = /fileadmin/datasheet/
    target = _blank
    altText = PDF icon
    titleText = Download datasheet

    //Personalize the icon, the file must be named pdf.png            
    icon_link = 1
    icon = 1
    icon {
      path = fileadmin/icons/
      ext = png
      }
    }
 }