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 核心解决方案,您可以使用本指南:
- 在 TYPO3 后端 "secured" 文件中创建一个文件存储空间
- 不要在存储记录中设置复选框"Is public?"
- 链接将使用 eID 和文件参数呈现
- 您可以查看处理这些链接的 FileDumpController:https://github.com/TYPO3/TYPO3.CMS/blob/2348992f8e3045610636666af096911436fa1c89/typo3/sysext/core/Classes/Controller/FileDumpController.php
- 您可以使用随附的挂钩根据您的逻辑扩展此控制器。
遗憾的是,我找不到有关此功能的任何官方文档,但会 post 当我找到一些东西或自己编写时。 ;)
也许这对您也有帮助:https://extensions.typo3.org/extension/fal_securedownload/
这里是官方部分,不过内容不多:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Fal/Administration/Storages.html?highlight=filedumpcontroller
首先,这是打字稿:
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
.
.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 核心解决方案,您可以使用本指南:
- 在 TYPO3 后端 "secured" 文件中创建一个文件存储空间
- 不要在存储记录中设置复选框"Is public?"
- 链接将使用 eID 和文件参数呈现
- 您可以查看处理这些链接的 FileDumpController:https://github.com/TYPO3/TYPO3.CMS/blob/2348992f8e3045610636666af096911436fa1c89/typo3/sysext/core/Classes/Controller/FileDumpController.php
- 您可以使用随附的挂钩根据您的逻辑扩展此控制器。
遗憾的是,我找不到有关此功能的任何官方文档,但会 post 当我找到一些东西或自己编写时。 ;)
也许这对您也有帮助:https://extensions.typo3.org/extension/fal_securedownload/
这里是官方部分,不过内容不多:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Fal/Administration/Storages.html?highlight=filedumpcontroller