Hallo *,
ich möchte gerne in einem Grid-Element via Flexform Seiten-IDs auswählen und dann per TS wieder ausgeben.
Dazu habe ich ein Flexform:
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<ROOT>
<type>array</type>
<el>
<teaser1>
<TCEforms>
<exclude>1</exclude>
<label>Seite die im Teaser 1 erscheinen soll</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</teaser1>
Das funktioniert soweit auch, allerdings habe ich Probleme mit der Ausgabe:
3 < temp.gridelements.defaultGridSetup
3{
prepend = COA
prepend{
10 = CONTENT
10 {
table = pages
select {
pidInList = 50
selectFields = title,uid
andWhere{
dataWrap = uid={field:flexform_teaser1}
}
}
renderObj = COA
renderObj{
10 = TEXT
10{
field = title
#insertData = 1
wrap = <h2>|</h2>
}
}
#field = flexform_teaser1
wrap = <div class="teaser">|</div>
}
}
}
Das Problem ist das mit "field:flexform_teaser1" den Wert "pages_190" zurückliefert.
Das funktioniert natürlich nicht im SQL-query.
hat jemand eine Idee, wie ich das umgehen kann? Ich braucht nur die ID, ohne den Prefix "pages_"!
TYPO3-Version: 4.7.7
Grid-Elements: 1.3.12
PHP-Version: 5.3.14
Hallo,
es ist wahrscheinlich auf den hier beschriebenen Bug zurückzuführen.
VG,
LuP
Ich glaube das es hier etwas anderes ist.
Flexforms speichern bei <type>group</type> immer den Tabellennamen mit.
Ich habe mir jetzt erst mal anders beholfen.
<T3DataStructure>
<meta>
<langDisable>1</langDisable>
</meta>
<ROOT>
<type>array</type>
<el>
<teaser1>
<TCEforms>
<exclude>1</exclude>
<label>Seite die im Teaser 1 erscheinen soll</label>
<config>
<type>input</type>
<size>30</size>
<max>256</max>
<eval>trim</eval>
<wizards type="array">
<_PADDING type="integer">2</_PADDING>
<link type="array">
<type>popup</type>
<title>Teaser 1 - Link</title>
<icon>link_popup.gif</icon>
<script>browse_links.php?mode=wizard</script>
<JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams>
</link>
</wizards>
</config>
</TCEforms>
</teaser1>
So wird die Page-ID als einfache Zahl gespeichert.
Unschön ist halt das der Seitenname nicht im Backendformular angezeigt wird, sondern nur die ID.
Also wenn jemand eine Idee hat.....
todo schrieb
Flexforms speichern bei <type>group</type> immer den Tabellennamen mit.
nein, das ist nur der Fall, wenn man bei allowed mehrere Tabellen (bzw. *) angegeben hat. Hier kommt nur eine einzige Tabelle in Betracht, weil Du explizit nur pages wählen möchtest. Daher müsste nur die id gespeichert werden. Siehe hierzu t3lib_loadDBGroup::getValueArray().
Ähnlich wie in dem anderen Thread könntest Du versuchen, folgendes in die Datei typo3conf/extTables.php hinzuzufügen. Die Flexform in dem Gridelement solltest Du dabei belassen, wie es anfangs war (also mit internal_type db).
$GLOBALS['TCA']['tt_content']['columns']['pi_flexform']['config']['ds']['*,gridelements_pi1'] = '
<T3DataStructure>
<ROOT>
<type>array</type>
<el>
<teaser1>
<TCEforms>
<exclude>1</exclude>
<label>Seite die im Teaser 1 erscheinen soll</label>
<config>
<type>group</type>
<internal_type>db</internal_type>
<allowed>pages</allowed>
<size>1</size>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>
</TCEforms>
</teaser1>
</el>
</ROOT>
</T3DataStructure>
';
VG,
LuP
Genau so funktioniert es.
Vielen Dank