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.