打字稿文件链接-在链接内包装URL

时间:2018-07-13 15:37:07

标签: typo3 typoscript

首先,这是打字稿:

20 = TEXT
20 {
 value {
  field = field_title
  wrap = |.txt
  }
 filelink {
  stdWrap.wrap = <li>|</li>  
  path = fileadmin/txt-files/
  }
 } 

我得到的结果是:

<li>
 <a href="/fileadmin/txt-files/Title.txt">
  <img src="typo3/sysext/frontend/Resources/Public/Icons/FileIcons/txt.png">
 </a>
</li>

我需要的是:

<li>
 <a href="/fileadmin/force_download_script.php?filepath=/fileadmin/txt-files/Title.txt">
  <img src="typo3/sysext/frontend/Resources/Public/Icons/FileIcons/txt.png">
 </a>
</li>

我需要使链接可下载,而不是在浏览器中打开文件。为此,我有一个force_download_script.php,但是当我这样做时:

wrap = fileadmin/force_download_script.php?filepath=|txt

filelink不再找到当前文件,而不再是当前文件。

我尝试使用ATagBeforeWrap.wrap,但它似乎不是为此目的而制作的。我也尝试了typolinkConfiguration.wrap,但没有成功。

关于实现该目标的任何想法?也许使用COA?

谢谢!

4 个答案:

答案 0 :(得分:1)

我不会使用脚本来执行此操作,而是使用服务器配置来执行此操作。如果使用Apache并启用了.htaccess,则可以将配置添加到文件所在目录中的.htaccess文件中。参见https://css-tricks.com/snippets/htaccess/force-files-to-download-not-open-in-browser/

或者,您也可以使用HTML5 download attribute。但是,Internet Explorer不支持此功能(不过Edge支持)。

答案 1 :(得分:0)

这个问题可能会变得相当复杂,但要逐步进行:

  • 如果您的代码不仅仅是复制和粘贴错误,那么您上面的代码可能是错误的:
    wrap = fileadmin/force_download_script.php?filepath=|.txt
    txt前面的点不见了。
    尽管如此,如果触发php-script仍然很有趣。
  • 由于typo3conf/LocalConfiguration.php中的某些设置或安装工具中的某些设置,脚本可能未触发。
  • 根据TYPO3-Version,也有可能根本不触发脚本,因为扩展中现在需要所有脚本。这意味着您可能需要为该脚本创建扩展名。
  • 用脚本路径简单地包装结果可能还不够,但是您必须通过TypoScript显式调用它,方法可能是将脚本包含为用户功能或lib。

使用管理面板来调试有关脚本的某些内容可能会很有用,但如果不需要,则必须在自己的代码中首先包含一些调试输出,如果这在核心(临时)中还不够的话。
因此,您必须确定脚本是否被触发,如果没有触发,则原因。

答案 2 :(得分:0)

您确定.filelink是您要找的吗?

.filelink用于一组文件。对于.path给定文件夹中的所有文件,将生成一个链接。参见manual

在您的描述中,您需要一个文本并带有指向一个文件的链接。对于在.typolink中指定链接的.parameter,这将是一个更大的问题。

如果您确实想要多个文件的链接列表,每个文件都用脚本包装,则需要修改.typolinkConfiguration.parameter,该文件将为used internaly by .filelink

无论如何,可能会进行一次包装,即:

.typolinkConfiguration.parameter.wrap = /fileadmin/force_download_script.php?|

也许使用.stdWrap.filelist构建列表更容易,在这里您可以以任何方式使用文件名来包装自己的A标签href参数。

答案 3 :(得分:0)

要将TYPO3核心解决方案与文件链接一起使用,可以使用本指南:

  1. 在TYPO3后端中创建您想要“安全”文件的文件存储
  2. 不要设置复选框“公开吗?”在存储记录中
  3. 链接将使用eID和文件参数呈现
  4. 您可以查看FileDumpController处理以下链接:https://github.com/TYPO3/TYPO3.CMS/blob/2348992f8e3045610636666af096911436fa1c89/typo3/sysext/core/Classes/Controller/FileDumpController.php
  5. 您可以使用随附的钩子用您的逻辑扩展此控制器。

不幸的是,我找不到此功能的任何官方文档,但是会在发现某些东西或自己写时将其发布。 ;)

也许这也可以为您提供帮助:https://extensions.typo3.org/extension/fal_securedownload/

这是官方部分,但不多:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Fal/Administration/Storages.html?highlight=filedumpcontroller