Zum Inhalt springen

Grid-Elements mit Flexform - Problem mit Page-Id

Erstellt am 11. Januar 2013 · 4 Antworten · letzte Antwort am 14. Januar 2013

Tags: Frage

todo ·

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

todo ·

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.....

LuP ·
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