1

我正在使用 Templavoilà Plus,并且我有一个字段,用户填写了一个名为field_title. 我使用这个字段为我的 FCE 的其他字段创建一个 URL/HTML,使用 Typoscript 对象路径。

常数:

file = fileadmin/datasheets/|.pdf

设置:

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

问题是我只想在文件/URL 存在的情况下这样做。首先,我想检查我创建的 URL 是否没有链接到 404 页面。然后我想检查文件大小是否不为0会更容易。经过两天的工作,到处寻找之后,我意识到这些解决方案都不是简单的......</p>

我想我有一些答案,使用stdWrap.rawUrlEncode, file:current:size, if.isTrue.data,FILE等……但显然,Typoscript 不是为初学者制作的,我似乎无法找到如何将所有内容按正确的顺序排列,以及如何正确使用所有这些.

我想我可以使用类似的东西来管理这种情况:

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

但真正困难的部分是从我使用 Typoscript 创建的 URL 获取文件大小。我很高兴只有使用 Typoscript 才能做到这一点,因为我知道可以从文件的 uid 中获取文件的大小......</p>

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

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

编辑:我正在使用 Typo3 7.6

4

3 回答 3

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

于 2018-07-10T20:16:21.720 回答
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
      }
    }
 }
于 2018-07-12T10:35:31.570 回答
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}|
   }
}
于 2018-07-05T05:18:20.257 回答