Typoscript 文件 link - 在 link 内包装 URL

Typoscript filelink - Wrap URL within link

首先,这是打字稿:

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>

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

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

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

我试过使用 ATagBeforeWrap.wrap 但它看起来不像是为此目的而制作的。我也试过 typolinkConfiguration.wrap 没有成功。

知道如何实现吗?也许使用 COA?

谢谢!

这个问题可能会变得相当复杂,但是一步一步来:

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

管理面板可能对调试脚本的一些事情很有用,但如果不是的话,你必须首先在你自己的代码中包含一些调试输出,如果这在核心中还不够(临时)。
所以你必须找出你的脚本是否被触发,如果没有,它的原因。

您确定 .filelink 是您要查找的内容吗?

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

根据您的描述,您希望用 link 将文本包裹到一个文件中。对于在 .parameter.

中指定 link 的 .typolink 来说,这将是一个更大的问题

如果您真的想要一个包含多个文件的 link 列表,每个文件都用您的脚本包装,您需要修改 .typolinkConfiguration.parameter,这将是 used internaly by .filelink

无论如何,可以做一个包装,然后是:

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

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

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

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

要使用带有文件链接的 TYPO3 核心解决方案,您可以使用本指南:

  1. 在 TYPO3 后端 "secured" 文件中创建一个文件存储空间
  2. 不要在存储记录中设置复选框"Is public?"
  3. 链接将使用 eID 和文件参数呈现
  4. 您可以查看处理这些链接的 FileDumpController:https://github.com/TYPO3/TYPO3.CMS/blob/2348992f8e3045610636666af096911436fa1c89/typo3/sysext/core/Classes/Controller/FileDumpController.php
  5. 您可以使用随附的挂钩根据您的逻辑扩展此控制器。

遗憾的是,我找不到有关此功能的任何官方文档,但会 post 当我找到一些东西或自己编写时。 ;)

也许这对您也有帮助:https://extensions.typo3.org/extension/fal_securedownload/

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