Zum Inhalt springen

Fluid Inhalte in den Content verschieben bzw. ersetzen

Erstellt am 5. Oktober 2013 · 2 Antworten · letzte Antwort am 8. Oktober 2013

Tags: Fluid, Inhaltselemente, Frage

Thomas673 ·

Moin,

ich habe ein Gästebuch mit PHP programmiert und möchte dieses in Typo3 im Inhaltsbereich meiner Website anzeigen. Dazu habe ich ein Erweiterungs-Template für die Seite Gästbuch erstellt und diesen Code eingefügt:

includeLibs.gb = typo3conf/test.php
page = PAGE
page {
10 = USER_INT
10.userFunc = user_klasse->main
10.stdWrap.wrap = |
}

Der Inhalt der PHP-Seite wird auch erfolgreich auf der Website angezeigt. Nur leider am Ende der Website, nicht im Inhaltsbereich (Content). Nun habe ich mit diesem Befehl gesagt, dass der Content die PHP-Seite ist, mit diesem Befehl:
content < page.10
Das löst aus, dass nur noch der Inhalt der PHP-Seite angezeigt wird, nicht das Haupttemplate mit Header,Footer,Menü etc. inklusive das PHP-Script im Content-Bereich.

Das Haupttemplate mit dem Content-Element habe ich so angelegt:

page = PAGE
page {
     includeCSS.Style = fileadmin/templates/style.css
     10 = FLUIDTEMPLATE
     10{
       file = fileadmin/templates/template.html
          variables {
                    content < styles.content.get
                    }
       }
}

Das HTML-Template mit <f:format.raw>{content}</f:format.raw>

Nun könnte man ja eigentlich mit
PHP-Code:

content.10 < page.10

im Erweiterungstemplate den Inhalt anhängen, oder? Ich habe viele Varianten ausprobiert, aber keine führt zum Erfolg.

karlchen ·

Hi,

du kannst es z.B. so machen:

temp.meinGaesteBuch = USER_INT
temp.meinGaesteBuch.userFunc = user_klasse->main
temp.meinGaesteBuch.stdWrap.wrap = |


page = PAGE
page {
     includeCSS.Style = fileadmin/templates/style.css
     10 = FLUIDTEMPLATE
     10{
       file = fileadmin/templates/template.html
          variables {
                    content < styles.content.get
                    meinGaesteBuch < temp.meinGaesteBuch
                    }
       }
}

und in deinem FLUID Template gibst du ein weiteres Element aus:

 <f:format.raw>{content}</f:format.raw>
 <f:format.raw>{meinGaesteBuch}</f:format.raw>

Das TypoScript PAGE Object, kann man sich wie einen Großen Container vorstellen, der alle Elemente einer HTML Page beinhaltet. Um diese Object immer wieder zu erweitern/verändern, vergibt man einen Namen, in deinem Fall "page" (kleingeschrieben), du könntest aber auch schreiben "seite = PAGE", "abc = PAGE"

in deinem Fall hast du da Object "page" 2x mal benutzt und somit den komplette Ausgabe verändert.

Thomas673 ·

Vielen Dank für deine Antwort!
Das ist die Lösung, hat sofort funktioniert.
Mein größter Fehler war, dass ich das html-Template nicht um das Element meinGaesteBuch erweitert habe, sondern versucht habe, das Content-Element zu überschreiben.