2012-06-18 27 views
2

我在Typo3 4.5.16項目中使用RealURL來說出某個頁面的URL。爲此,我使用了一個查找表,它將一定數量的ID匹配到它們的URL對應項。RealURL:FixedPostVars中的可選分段

E.g.
http://www.example.com/path/to/catalog/chapter1/section1/group1/prod-123/
將映射到頁面 「目錄」 具有映射爲chaptersectiongroupproduct,RESP參數。 請注意,只有那些參數的LAST是相關的,有一個真正的映射,其他都只能有一個「漂亮」的路徑。現在

我的問題:不是每一個產品都有前述路徑段的各個層面。例如,其他產品可能有這樣的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

嗯,我找到了一個解決辦法哈克自己。

它採用userFunc蒸發散,基本上模仿LookupTable中的行爲。對於每個級別都有一個這樣的功能。它修改傳遞給所述UNSER功能

編碼的$params['pathParts']數組:

  • 對於「父」的水平,只是映射到段。如果未映射,這將返回空字符串。
  • 對於映射級別,刪除所有空元素在所傳遞的$params['pathParts']數組末尾
  • =>移除空零件

解碼:

  • 對於 「父」 電平,請檢查$params['pathParts']中是否有更多元素。如果不是,這是一個「跳過」的父母。只需追加當前值的$params['pathParts'],將由RealURL
  • 映射的水平,最終被稱爲正確的值傳遞到一個新的水平。只要地圖

只要用戶函數的處理沒有被RealURL改變太多,它就會工作...

1

你可能想嘗試realUrl提供了鉤子,see this article

+0

鉤適用於所有的網址,但我只需要2頁...但是,值得一試! –