1

考虑一下以下页面树:

  • 网站 A(具有域记录 a.example.com 的根页面)
    • 页面 A
      • A.1 页
    • B页
    • C页
  • 网站 B(具有域记录 b.example.com 的根页面)
    • 第 X 页
      • Page Y(“Page A”的挂载点,包含该页面的内容)

要生成规范 URL,我需要从原始页面获取绝对 URL。我在“Page X”上的打字稿 userfunc 中这样做,但似乎有问题:

这将返回页面 A 的 uid,而不是页面 X:

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

但这不会返回预期的 URL “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 的原始 URL?

4

1 回答 1

-1

又过了几个小时,我找到了一种非常简单的方法来生成没有挂载点的原始 URL:

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

简而言之,我没有使用TypoScriptFrontendController包含挂载点的原始文件,而是简单地克隆它,删除挂载点,然后通过ContentObjectRenderer修改后的新创建的 url 生成 url TypoScriptFrontendController

于 2016-07-29T07:58:52.467 回答