Es gibt doch eine saubere Lösung für Dein Problem.
Angenommen Du verwendest ein Fluid Template für Deine Seite oder die Ext:bootstrap_package. Auf jeden Fall so das im TypoScript dieses gilt:
page.10 = FLUIDTEMPLATE
Weiter angenommen Du hast eine Ext:site_package Erweiterung und für Dein FLUIDTEMPLATE ist ein templateRootPath gesetzt wie z.Bsp:
page.10.templateRootPaths.0 = EXT:site_package/Resources/Private/Templates/Page/
Weiter angenommen, dass die UID deiner Startseite 1 ist.
Dann kannst Du folgendes machen:
1) Im TypoScript baust Du das hier ein:
[traverse(request.getQueryParams(), 'tx_news_pi1/news') > 0 and traverse(page, "uid") == 1]
page.10.templateName.cObject >
page.10.templateName = NewsDetail
lib.newsDetail = USER
lib.newsDetail {
userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
vendorName = GeorgRinger
extensionName = News
pluginName = Pi1
controller = News
action = detail
}
[GLOBAL]
Die Condition prüft, ob in den GET Parametern tx_news_pi1[news] vorkommt und dieser größer 0 ist. Zusätzlich wird geprüft, ob es sich um die Startseite handelt.
Trifft das zu, dann wird das cObj zu dem templateNamen ins Nirvana geschickt und der Template-Name NewsDetail gesetzt. Ausserdem wird ein USER Objekt erzeugt, dass die Detail-Action des News-Plugins lädt. Das ganze wird in lib.newsDetail abgelegt.
2) Jetzt benötigst Du noch das NewsDetail Template für Deine Startseite in dem Du das cObject lib.newsDetail aufrufst.
Nach den o.g. Annahmen musst Du dieses dann hier erstellen:
Ext:site_package/Resources/Private/Templates/Page/NewsDetail.html
Da sollte dann in etwas folgendes drin stehen:
<html xmlns="`http://www.w3.org/1999/xhtml`" lang="en"
xmlns:f="`http://typo3.org/ns/TYPO3/Fluid/ViewHelpers`" data-namespace-typo3-fluid="true">
<f:layout name="Default"/>
<f:section name="Main">
<f:cObject typoscriptObjectPath="lib.newsDetail" />
</f:section>
</html>
Am besten schaust Du Dir dafür Dein Standard Page-Template an, dass Du verwendest und baust es so um, dass Deine Seitenstruktur richtig geladen wird. Das kann bei Dir etwas anders aussehen, als hier. Wichtig ist der ViewHelper f:cObject der lib.NewsDetail lädt.
3) Als letztes musst Du dann nur noch in Deinem News Plugin für die Listen-Ansicht einstellen, dass die Detail-Seite jetzt die Startseite ist.
Ich hab das ganze in TYPO3 11 getestet. Sollte so aber auch in TYPO3 10 funktionieren.
Ab Version 12 kann man dann statt dem USER Objekt im TypoScript das neue EXTBASEPLUGIN Objekt verwenden. Ansonsten funktioniert das in V12 auch genauso.