typo3 - TYPO3 构造带有几个占位符的 URL
问题描述
我不是开发人员,但我需要帮助与我的网络开发人员交谈。我们有一个公司网站,其中包含使用 TYPO3 制作的员工档案。在每个个人资料站点上,我们希望嵌入一个指向存储库网站的 URL,该 URL 将显示该人的出版物列表。URL 对此存储库的 SOLR 搜索字符串进行编码。因此,除了中间某处的个人标识符外,所有员工资料的 URL 都是相同的。与其在每个员工个人资料页面中输入完整的 URL,我更愿意使用这样的占位符构造一个 URL
占位符A+员工ID+占位符B
如果 SOLR 搜索字符串将来发生变化(即在此搜索中排除某些文档类型或更改排序),我们将只需要更改占位符,而不是每个配置文件页面中的完整 URL。必须有一种简单的方法来做到这一点,但我的网络开发人员告诉我,这需要一个包含员工 ID 和大量脚本的数据库。她是对的吗?由于我们最初必须触摸每个个人资料页面以包含 URL,因此可以在每个个人资料页面上输入和存储唯一的员工标识符。我只是想避免在需要更改时再次触摸每一页。
这是一个非常有用的概念,必须有一个插件或其他东西来做到这一点。你能给我一些关键词或提示,以供我们下一次讨论吗?
解决方案
你的 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。
推荐阅读
- php - 从 URL Apache 中删除 .php
- php - php Carbon 设置输入区域设置
- python - 如何在python中替换列表中的单引号
- javascript - Javascript - 从资产文件夹中的文件实例化新文件类型
- linux - 列出并更改目录并在 Shell 中运行命令
- javascript - javascript获取调用函数的参数?
- android - 像素 2 模拟器/虚拟设备不在 AVD 管理器设备列表中
- php - 我们如何在 php 中获取 .ai 文件的尺寸
- spring - Spring Cloud Stream Reactive,如何为生产者设置路由键
- loopback - Role.getRoles(context, callback) 中引用的“安全上下文”是什么