2016-07-28 44 views
1

考慮一下以下pagetree:獲得從UID原始URL不同的域上

  • 網站(含域名記錄a.example.com根頁)
    • 頁A
      • 頁A.1
    • 網頁B
    • 網頁C
  • 網站B
    • 頁X
      • 頁Y(的 「頁面A」 掛載點(帶域記錄b.example.com根頁),與從該網頁內容)

要生成規範的URL,我需要得到原始網頁的絕對網址。我這樣做,在「第X頁」一Typo腳本userfunc,但有些事情似乎是錯誤的:

這將返回頁面A的UID,而不是X頁:

$GLOBALS['TSFE']->page['uid']; 

但這不返回預期網址「a.example.com/page-a/」,而是「b.example.com/page-x/page-y」:

$GLOBALS['TSFE']->cObj->typoLink_URL([ 
    'parameter' => $GLOBALS['TSFE']->page['uid'], 
    'forceAbsoluteUrl' => 1 
]); 

顯然,TYPO3仍不知何故使用網頁的域名用戶當前正在打開,而不是「頁面A」實際位於的原始域。

完井的緣故,這裏的一些值我已經設置在我SETUP.TXT:

config { 
    absRefPrefix =/
    content_from_pid_allowOutsideDomain = 1 
    typolinkCheckRootline = 1 
    typolinkEnableLinksAcrossDomains = 1 
} 

問題是:我怎樣才能在網頁A的UID原來的網址是什麼?

回答

-1

多帶幾個小時,我發現了一個很簡單的方法來產生不掛接點的原始網址:

$tsfe = clone $GLOBALS['TSFE']; 
$tsfe->MP = ''; 
$cObj = new ContentObjectRenderer($tsfe); 
$url = $cObj->typolink_URL(array('parameter' => $uid, 'forceAbsoluteUrl' => 1)); 

總之,而是採用了原來TypoScriptFrontendController,其中包含掛載點,我乾脆克隆它,移除掛載點,然後通過修改後的TypoScriptFrontendController創建的新的ContentObjectRenderer生成url。

+0

我真的很感謝任何人downvoted作爲評論的反饋。我知道這個解決方案有點骯髒,但這是我能夠實現它的唯一方法。如果您知道更好的/更清潔的版本,請隨時自行發佈答案。或者至少讓我知道爲什麼你認爲我的回答值得讚揚作爲評論。 –