【问题标题】:Typoscript - Link a file only if it exists using URLTyposcript - 仅当文件存在时才使用 URL 链接文件
【发布时间】:2018-07-04 15:17:00
【问题描述】:

我正在使用 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会更容易。 在研究了两天之后,在到处寻找之后,我意识到这些解决方案都不是一件容易的事……

我想我有一些答案,使用 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 页面。 或者也许有一个我没有想到的更简单的解决方案!

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

编辑:我使用的是 Typo3 7.6

【问题讨论】:

    标签: typo3 typoscript templavoila


    【解决方案1】:

    您可能可以为此使用文件链接。如果不对其进行测试,它应该是这样的:

    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

    【讨论】:

    • 非常感谢!使用文件链接是解决方案!我将添加我在评论中使用的代码。我经常发现 Typo3 文档缺乏具体的例子,所以这可能对某些人有用 =)
    • 你知道如何使它区分大小写吗?所以它可以是 .pdf 或 .PDF。 field_title 也一样。
    【解决方案2】:

    为什么不让 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}|
       }
    }
    

    【讨论】:

    • 非常感谢您的回答。我已经尝试过您的答案,它有效,并且比包装到 | 中更好。但是,即使文件不存在,链接仍在创建中……
    • TYPO3 的默认行为是:如果链接的目标不可用,则不生成链接(只显示要链接的文本)。所以我会认为一个空链接是一个错误,你应该在forge.typo3.org上打开一个错误票。
    • 抱歉,可能不是很清楚,该链接只是指向 404 Not Found 的链接。我试图找到解释默认行为的地方,我在这里找不到任何关于不可用链接的信息 docs.typo3.org/typo3cms/TyposcriptReference/Functions/Typolink/…
    • 不仅当你链接到一个uid时,如果uid不存在,链接就不会生成?我觉得如果您编写完整的 URL,它的工作方式就不一样了。那么问题可能是,从 URL 中创建 uid 是否可能/相关?
    • 我根本不知道是否记录了不可用链接的行为。您可能需要检查链接生成的 PHP 源代码,因为它不仅与打字稿链接有关。对于流体或由 API 调用生成的任何其他链接也是如此。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-05-12
      • 2016-12-19
      • 1970-01-01
      • 2016-09-05
      • 2016-09-11
      • 2012-10-05
      • 1970-01-01
      • 2012-06-14
      相关资源
      最近更新 更多