我在Typo3 4.5.16项目中使用RealURL来说出某个页面的URL。为此,我使用的查找表将一定数量的ID与其URL对应项匹配。
E.g。
http://www.example.com/path/to/catalog/chapter1/section1/group1/prod-123/
将映射到页面“catalog”,其参数映射为chapter
,section
,group
和product
,resp。
请注意,只有那些参数的最后是相关的并且具有真实的映射,其他参数仅用于“漂亮”路径。
现在我的问题:并非每个产品都有前面路径段的所有级别。例如,另一个产品可能有这样的URL:
http://www.example.com/path/to/catalog/chapter1/section4/prod-789/
数据库看起来像这样:
Id | seg0 | seg1 | seg2 | seg3 | dummy0 | dummy1 | dummy2 | MapId
----|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------
1 | chapter1 | section1 | group1 | prod-123 | 1 | 1 | 1 | 123
2 | chapter1 | section4 | | prod-789 | 1 | 4 | 0 | 789
您会看到到段名称的映射只是空的。
然而, RealURL会使用空字符串作为组,并产生
chapter1/section4//prod-789
有没有办法抑制这种空映射?解码会将段传递给下一个参数(如值映射的noMatch => bypass
)
如果没有,可以使用查找表一次映射多个路径段吗? (即将整个路径映射到真实ID)?
答案 0 :(得分:1)
您可能想尝试使用realUrl提供的挂钩see this article
答案 1 :(得分:0)
好吧,我自己找到了一个hacky解决方法。
它使用userFunc
tions,基本上模仿lookupTable的行为。对于每个级别,都有一个这样的功能。它修改传递给unser函数的$params['pathParts']
数组
<强>编码:强>
$params['pathParts']
数组<强>解码:强>
$params['pathParts']
中是否还有其他元素。如果没有,这是一个“跳过”的父母。只需将当前值附加到$params['pathParts']
,它将由RealURL传递到下一个级别只要RealURL对userFunctions的处理没有太大改变,它就能正常工作......