Typoscript - Link 仅当文件存在时使用 URL

Typoscript - Link a file only if it exists using URL

我正在使用 Templavoilà Plus,并且我有一个字段,用户使用标题 field_title 填写了该字段。 我使用此字段为我的 FCE 的其他字段创建一个 URL/HTML,使用 Typoscript Object Path.

常数:

file = fileadmin/datasheets/|.pdf

设置:

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

问题是只有 file/URL 存在时我才想这样做。 首先,我想检查我创建的 URL 是否没有 link 到 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 中获取文件的大小……

或者也许我应该坚持 检查 URL 是否不会导致 404 页面 。 或者也许有一个我没有想到的更简单的解决方案!

任何帮助将不胜感激,如果这个问题太容易解决,我们深表歉意,非常感谢您阅读本文 post! =)

编辑:我使用的是 Typo3 7.6

你为什么不让 TYPO3 决定文件是否存在以及是否值得建立一个 link?

你的问题可能是你没有什么可以成为 linked 的。 (空 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}|
   }
}

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

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

感谢 Rudy 的回答,我已经能够解决我的问题。 为了对其他人有用,这里是我使用的一点 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
      }
    }
 }