RealURL:FixedPostVars中的可选段

时间:2012-06-18 16:02:15

标签: typo3 lookup realurl

我在Typo3 4.5.16项目中使用RealURL来说出某个页面的URL。为此,我使用的查找表将一定数量的ID与其URL对应项匹配。

E.g。
http://www.example.com/path/to/catalog/chapter1/section1/group1/prod-123/
将映射到页面“catalog”,其参数映射为chaptersectiongroupproduct,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)?

2 个答案:

答案 0 :(得分:1)

您可能想尝试使用realUrl提供的挂钩see this article

答案 1 :(得分:0)

好吧,我自己找到了一个hacky解决方法。

它使用userFunc tions,基本上模仿lookupTable的行为。对于每个级别,都有一个这样的功能。它修改传递给unser函数的$params['pathParts']数组

<强>编码:

  • 对于“父级”级别,只需映射到细分。如果没有映射,这将返回空字符串。
  • 对于映射级别,删除传递的$params['pathParts']数组
  • 末尾的所有空元素
  • =&GT;删除空白部分

<强>解码:

  • 对于“父级”级别,请检查$params['pathParts']中是否还有其他元素。如果没有,这是一个“跳过”的父母。只需将当前值附加到$params['pathParts'],它将由RealURL传递到下一个级别
  • 最终使用正确的值调用映射的级别。只是地图

只要RealURL对userFunctions的处理没有太大改变,它就能正常工作......