Получить исходный URL из UID в другом домене

Рассмотрим на мгновение следующее дерево страниц:

  • Веб-сайт A (корневая страница с записью домена a.example.com)
    • Страница А
      • Страница А.1
    • Страница Б
    • Страница C
  • Веб-сайт B (корневая страница с доменной записью b.example.com)
    • Страница X
      • Страница Y (точка монтирования «Страницы А» с содержимым этой страницы)

Чтобы сгенерировать канонические URL, мне нужно получить абсолютный URL с исходной страницы. Я делаю это в Typoscript userfunc на «Страница X», но что-то, кажется, не так:

Это возвращает UID страницы A, а не страницы 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
}

Вопрос в том, как я могу получить исходный URL для идентификатора страницы A?

1

Решение

Через несколько часов я нашел очень простой способ создания исходного URL без точек монтирования:

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

Короче вместо использования оригинала TypoScriptFrontendController, которая содержит точку монтирования, я просто клонирую ее, удаляю точку монтирования и затем генерирую URL через новый ContentObjectRenderer созданный этим измененным TypoScriptFrontendController,

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]