Zum Inhalt springen

Inhalt von FCEs mit PHP abfangen

Erstellt am 2. Mai 2013 · 1 Antwort · letzte Antwort am 2. Mai 2013

Tags: Frage

luggi2 ·

Hallo allerseits,
ich möchte den Inhalt meiner FCEs, also grob gesagt den HTML-Code der letztendlich ausgegeben wird, über PHP abfangen. Das ganze soll wie ein Hook funktionieren. Kurz bevor der Inhalt des FCEs ausgegeben wird, soll er nochmal mit einer PHP-Funktion modifiziert werden.

Z.z. binde ich den "Hook" über eine Userfunction im FCE ein. Dafür füge ich das folgende TypoScript in mein FCE-Element ein.

10 = COA
10 {
	10= RECORDS
	10.source.current=1
	10.tables = tt_content

	15 = USER
	15.userFunc = user_test->main
	15.renderObj < 10

}

Die PHP-Klasse user_test sieht wie folgt aus:

class user_test{
  public function main($content, $conf) {
    //Hier soll der HTML-Content des gesamten FCE-Inhaltes abgefangen werden

      return $content;
   }
}

Normalerweise sollte jetzt in $content mein HTML-Code des FCE-Inhalts stehen. Also ich vermute das jetzt einfach mal rein vom Logischen her. In der $conf Variablen steht ja meine TS-Konfiguration.

Ich habe auch schon probiert den Code über diverse Funktionen des cObj abzufangen, ohne Erfolg.

Hat denn jemand eine Lösung parat wie ich den Inhalt einer FCE mit PHP abfangen und editiert zurückgeben kann? Der Hintergrund ist, dass ein Redakteur eine Tabelle pflegen soll die in der Spaltenanzahl dynamisch ist. Dafür wird ein FCE definiert welches 10 Zeilen besitzt. Via PHP soll das DOM geparst werden und als Tabelle samit Inhalt zurückgegeben werden wobei die leeren Spalten einfach abgeschnitten werden.

Danke und viele Grüße!

luggi2 ·

Problem gelöst...

Typoscript muss so aussehen:

10 = USER
10 {
	userFunc = user_main->main
	temp = TEXT
	temp.data = current:1
}

Das gibt die ID des Elements zurück. Und jetzt das entscheidende, das Rendern!

$cId = $this->cObj->cObjGetSingle($conf['temp'], $conf['temp.']);

$tt_content_conf = array('tables' => 'tt_content','source' => $cId,'dontCheckPid' => 1);
$content = $this->cObj->RECORDS($tt_content_conf);

Problem gelöst 😉