Ich möchte in einer Extension eine ganze Menge Plugins unterbringen zwischen denen im Backend per Dropbox ausgewählt werden können soll. Bisher bin ich mit meiner Recherche soweit gekommen, dass dies irgendwie mit Flexforms realisierbar sein sollte. Wenn es dafür bessere/einfachere Wege gibt, die ich nur noch nicht entdeckt habe, immer her damit. 😉
Ich hab jetzt folgenden Tab in meiner Plugin-Konfiguration untergebracht:
. <display>
<root>
<tceforms>
<sheettitle>Plugin Selection</sheettitle>
</tceforms>
<type>array</type>
<el>
<pages>
<tceforms>
<label>select Plugint:</label>
<config>
<type>select</type>
<items type="array">
<numindex index="0" type="array">
<numindex index="0">Editor Plugin</numindex>
<numindex index="1">tx_flextest_pi1</numindex>
</numindex>
<numindex index="1" type="array">
<numindex index="0">Category Plugin</numindex>
<numindex index="1">tx_flextest_pi2</numindex>
</numindex>
<numindex index="2" type="array">
<numindex index="0">Info Plugin</numindex>
<numindex index="1">tx_flextest_pi3</numindex>
</numindex>
</items>
<minitems>1</minitems>
<maxitems>1</maxitems>
<size>1</size>
</config>
</tceforms>
</pages>
</el>
</root>
</display>
Wie sage ich ihm denn jetzt, dass er das entsprechende Auswahlergebnis in die entsprechende Zeile von tt_content als list_type speichern soll (ich nehme einfach mal an, dass dieses Feld bestimmt, welches piX angezeigt wird)?
Wo speichert es das Ergebnis ab, wenn ich das so lasse wie oben im Beispiel?
PS: Ja ich hab mir heute den ganzen Tag verschiedenste Dokus, Tutorials und Beispiele (z.B. felogin) angesehen. Das hier gepostetete, ist das Wissen, was ich aus dem gelesenen herausziehen kann.
Wie sage ich ihm denn jetzt, dass er das entsprechende Auswahlergebnis in die entsprechende Zeile von tt_content als list_type speichern soll (ich nehme einfach mal an, dass dieses Feld bestimmt, welches piX angezeigt wird)?
Das solltest Du vergessen.
Wo speichert es das Ergebnis ab, wenn ich das so lasse wie oben im Beispiel?
Im Feld "pi_flexform" als xml.
PS: Ja ich hab mir heute den ganzen Tag verschiedenste Dokus, Tutorials und Beispiele (z.B. felogin) angesehen. Das hier gepostetete, ist das Wissen, was ich aus dem gelesenen herausziehen kann.
http://www.google.de/search?q=Flexform+typo3
Die ersten beiden Treffer erklären schon ganz gut, wie man mit Flexforms umgeht. Flexforms hat nichts mit mehreren Plugins zu tun.
Danke für deine Hilfe!
Das Feld pi_flexform ist allerdings leer, wenn ich die entsprechende Seite aufrufe (hab einfach mal in der xyz_pi1 Klasse zum content ein print_r($this->cObj, 1) hinzugefügt und bei pi_flexform steht wirklich nichts).
Im Backend lädt er es allerdings richtig und die Einträge in der ext_table.php sehen auch so aus wie in den guides.
Also ich denke mal, wenn es so läuft, wie ich es mir vorstelle, hole ich immer den Flexformwert beim Aufruf des Plugins irgendwo her und wähle dann je nach Wert einen entsprechenden Inhalt für das Plugin. So krieg ich auch "verschiedene" Plugins dargestellt. Jetzt muss ich nurnoch rausfinden, warum da kein pi_flexform inhalt steht.
Also, ich bin mir nicht ganz sicher, ob dich das deiner Lösung einen Schritt näher bringt, aber die FlexForm-Daten sind normalerweise unter $this->cObj->data verfügbar, keine Ahnung ob es da unter $this->cObj auch ein pi_flexform-Feld gibt, und ob du dir dieses (offenbar leere) Feld angesehen hast!
genau $this->cObj->data enthält den Datensatz zur uid der Page, genauso wie er in der Datenbank steht. Und eine Spalte von ...->data ist pi_flexform. Genau diese ist leer.
Ich hab mal durch googlen noch das hier gefunden. Dort wird davon gesprochen, dass man das Flexform einfach in einem anderen Datensatz hat.
Also habe ich jetzt mal folgendes gemacht:
mysql> select uid, pid, pi_flexform from tt_content;
es gibt keinen Datensatz, der die von mir geschriebene Flexform enthält. Auch direkt das Content Element, welches mein Plugin enthält direkt per select aufgerufen enthält garkeine Flexform. Trotzdem wird sie im BE richtig dargestellt.
Und nu?
hab die Lösung gefunden.
Ich hab die folgende Zeile nach einem anderen Thread mal auskommentiert um zu sehen, ob ich diese brauche. Da er das Formular trotzdem angezeig hatte, hab ich das natürlich fleissig ignoriert. 😃
$TCA['tt_content']['types'][$_EXTKEY.'_pi1']['showitem']='CType;;4;button;1-1-1, header;;3;;2-2-2,pi_flexform;;;;1-1-1';
Diese Zeile sorgt also dafür, dass der Eintrag überhaupt erst ins Content-Element übernommen wird.