首页 > 解决方案 > TYPO3 构造带有几个占位符的 URL

问题描述

我不是开发人员,但我需要帮助与我的网络开发人员交谈。我们有一个公司网站,其中包含使用 TYPO3 制作的员工档案。在每个个人资料站点上,我们希望嵌入一个指向存储库网站的 URL,该 URL 将显示该人的出版物列表。URL 对此存储库的 SOLR 搜索字符串进行编码。因此,除了中间某处的个人标识符外,所有员工资料的 URL 都是相同的。与其在每个员工个人资料页面中输入完整的 URL,我更愿意使用这样的占位符构造一个 URL

占位符A+员工ID+占位符B

如果 SOLR 搜索字符串将来发生变化(即在此搜索中排除某些文档类型或更改排序),我们将只需要更改占位符,而不是每个配置文件页面中的完整 URL。必须有一种简单的方法来做到这一点,但我的网络开发人员告诉我,这需要一个包含员工 ID 和大量脚本的数据库。她是对的吗?由于我们最初必须触摸每个个人资料页面以包含 URL,因此可以在每个个人资料页面上输入和存储唯一的员工标识符。我只是想避免在需要更改时再次触摸每一页。

这是一个非常有用的概念,必须有一个插件或其他东西来做到这一点。你能给我一些关键词或提示,以供我们下一次讨论吗?

标签: typo3

解决方案


你的 URL 是如何构建的?

一般来说,URL 是由多个部分构建的

[[[<protocol>]<domain>]<path>[?<parameters>]][#<anchor>]

现在我们需要确定您要插入的位置staffID
是在<path>还是在<parameter>

在 TYPO3 中,我们没有真正的<path>. 它只是一个index.php用一些参数隐藏基本 URL 的图像。首先是参数&id=123
进一步的参数可以作为参数或路径段出现。无论如何,TYPO3 将处理虚拟路径和参数之间的转换(像 realurl 或核心这样的扩展)。对于 URL 生成,您调用 TYPO3 提供参数列表,或者如果调用“页面”,您将以决定渲染的参数列表结束。

然后您可以混合 URL 生成:
您获取生成的 URL 并在“猜测”它们时添加路径段,而不涉及 TYPO3。这可能会导致问题,因为您将使用 TYPO3 不知道的 URL 调用服务器,因为它没有生成它。如果 TYPO3 生成一个 URL,它会将其存储在数据库中,并将其“翻译”为参数。realurl 可以猜测翻译,但有时它会失败,尤其是在使用 chashes 的情况下。

是什么cHashes
使用 cHashes TYPO3 保护页面缓存免受不相关参数的影响。如果生成页面,则取决于参数。任何进一步的参数都可能导致另一个页面,因此 TYPO3 将参数的哈希值与每个缓存页面一起存储。为了验证,可以将此哈希添加到 URL。这个附加参数也存储在“翻译”表中。

如果您现在将参数添加到存储的 URL 并将其转换回参数,则您有一个cHash标识缓存页面的参数。但只针对一部分参数。当页面生成并存储在缓存中时,您添加的参数是未知的,也没有考虑。如果缓存页面已交付,您的附加参数将“丢失”。

因此有必要在使用 TYPO3 生成 URL 时包含所有参数。
您的添加staffID必须使用 TYPO3 完成,并且不能是 HTML 模板(或 javascript)中路径段的串联。
如果您稍后更改参数,则需要更改 URL 的生成。

我建议将staffID作为字段添加到记录中,并使用 TYPO3 生成文档列表的 URL。


推荐阅读