2016-07-28 18 views
1

den folgenden Seitenbaum für einen Moment vor:Holen Sie sich die Original-URL von einer UID auf einer andere Domäne

  • Webseite A (Stammseite mit Domaineintrag a.example.com)
    • Seite A
      • Seite A.1
    • Seite B
    • Seite C
  • Webseite B (root mit Domain Seite Datensatz b.example.com)
    • Seite X
      • Seite Y (Einhängepunkt der "Seite A", mit Inhalt von dieser Seite
      • )

kanonische URLs zu generieren, muss ich bekommen die absolute URL von der Originalseite Ich tue das in einem typoscript userfunc auf „Seite X“, aber etwas scheint falsch zu sein:

Diese uid von Seite A zurückkehrt, nicht Seite X:

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

Aber diese Rückkehr nicht die erwartete URL "a.example.com/page-a/", sondern "b.example.com/page-x/page-y":

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

Offensichtlich TYPO3 verwendet immer noch irgendwie die Domäne der Seite Der Benutzer ist gerade an der Stelle, an der sich "Page A" befindet.

Für Fertig willen, hier einige Werte Ich habe bereits in meiner setup.txt:

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

Die Frage ist: Wie kann ich die Original-URL für die uid von Seite A zu bekommen?

Antwort

-1

Mit ein paar Stunden, ich habe eine sehr einfache Art und Weise fand die ursprüngliche URL ohne Einbindungspunkte zu generieren:

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

Kurz gesagt, statt der ursprünglichen TypoScriptFrontendController zu verwenden, die den Mount-Punkt enthält, habe ich einfach klonen Entfernen Sie den Mountpoint und generieren Sie dann die URL über eine neue ContentObjectRenderer, die durch diese modifizierte TypoScriptFrontendController erstellt wurde.

+0

Ich würde Feedback gerne als Kommentar von wer auch immer downvoted. Ich weiß, dass diese Lösung ein bisschen dreckig ist, aber es war der einzige Weg, wie ich es zum Laufen bringen konnte. Wenn Sie eine bessere/sauberere Version kennen, können Sie gerne selbst eine Antwort schreiben. Oder lassen Sie mich zumindest wissen, warum Sie meine Antwort als Kommentar wert halten. –