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.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 中获取文件的大小……
或者也许我应该坚持 检查 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
}
}
}
我正在使用 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.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 中获取文件的大小……
或者也许我应该坚持 检查 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
}
}
}