Zum Inhalt springen

gridelements mit flexform

Erstellt am 26. Juli 2012 · 5 Antworten · letzte Antwort am 4. Juni 2013

Tags: Frage

MrFriendly ·

Hi,

über das das Feld "Flexform-Konfiguration" habe ich die Datenstruktur eines gridelements angegeben, bei Anlegen/Editieren des Contentelements bekomme auch die definierten Eingabefelder wie von Flexforms gewohnt angezeigt.

Wie aber kommen die Eingaben ins Frontend? Der TS Teil im Manual, auf den verwiesen wird, ist leider leer.
Es wird nur der übliche <div id="cxx" class="csc-default"> wrap des contentelements ausgegeben, ohne Inhalt.

skydivematy ·

Hallo,
Als Beispiel ein FCE 3 Column.
Das in den Setup Part.

 tt_content.gridelements_pi1.20.10.setup {
  # ID of gridelement
  4 < temp.gridelements.defaultGridSetup
  4 {
    columns {
      # colPos 0
      1 < .default
      1.wrap = <article  class="g33l">|</article >
     
      # colPos 1
      2 < .default
      2.wrap = <article  class="g33l">|</article >
     
      # colPos 2
      3 < .default
      3.wrap = <article  class="g33r">|</article >
     
    }
  }
}

Die "4" ist die ID des CE Be Layouts...

Ich Denke das Du das meintest Oder?

gruss
maty

MrFriendly ·

Hallo und Danke für die Antwort,

aber nein, das ist nicht was ich meine. Das ist ja die Methode wie man gridelements, die mittels Raster-Konfiguration definiert sind, einbindet.
Mich interessiert aber die Einbindung von gridelements, für die eine Flexform-Konfiguration angegeben ist.

Beispiel:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
	<ROOT type="array">
		<type>array</type>
		<el type="array">
			<headline type="array">
				<TCEforms type="array">
					<config type="array">
						<type>input</type>
						<size>40</size>
						<eval>trim</eval>
					</config>
					<label>Headline</label>
				</TCEforms>
			</headline>
			
			<text type="array">
				<TCEforms type="array">
					<config type="array">
						<type>text</type>
						<cols>40</cols>
						<rows>5</rows>
						<eval>trim</eval>
					</config>
					<label>Text</label>
				</TCEforms>
			</text>
			
			<link type="array">
				<TCEforms type="array">
					<config type="array">
						<type>input</type>
						<size>40</size>
						<max>256</max>
						<checkbox></checkbox>
						<eval>trim</eval>
						<wizards type="array">
							<_PADDING type="integer">2</_PADDING>
							<link type="array">
								<type>popup</type>
								<title>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>             
				<label>Link</label>
				</TCEforms>
			</link>
		</el>
	</ROOT>
</T3DataStructure>

Dies definiert ein gridelement wie man es von TemplaVoila kennt, drei Eingabefelder für Headline, Text und Link. Bei Anlegen/Editieren des Contentelements werden die Felder auch entsprechend angezeigt und können befüllt werden.
Aber wie werden die Eingaben nun auf der Website ausgegeben?

jochla ·

Du kannst die Flexform Felder aus der Konfiguration ganz einfach ansprechen: flexform_feldname, also in deinem Fall z.B. flexform_headline. So hab' ich es kürzlich in einem noch laufenden Projekt gemacht.

Die Flexform Datenstruktur ist in tt_content im Feld "Erweiterungsoptionen" (pi_flexform) gespeichert. So sieht der Inhalt aus:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3FlexForms>
	<data>
		<sheet index="sDEF">
			<language index="lDEF">
				<field index="button_text">
					<value index="vDEF">weiterlesen...</value>
				</field>
				<field index="button_link">
					<value index="vDEF">http://domain.com</value>
				</field>
			</language>
		</sheet>
	</data>
</T3FlexForms>

Derselbe Code funktioniert aber gerade in einem anderen Projekt nicht. Da bin ich noch bei der Ursachenforschung. Der Grund könnte sein, dass in diesen Projekt alternative Websitesprachen definiert sind.

Ich hoffe das bringt dich weiter!

Johannes.

mischa ·

Hallo,

ich hatte das selbe Problem: wie kann ich sowas wie ein FCE für TemplaVoila mit Gridelements herstellen und nur auf die Flexforms zugreifen?

Hier meine Lösung, die super funktioniert mit Beispiel für Bild und Text. Links und alles andere sind auch möglich.

1. Gridelement erstellen.
a) Raster-Konfiguration:
Damit verhindere ich, dass normale CE in das Grid eingepflegt werden können. Es wird somit als eigenes CE behandelt.

backend_layout {
     colCount = 0
     rowCount = 0
}

b) Flexform-Konfiguration:
Ein ganz normales Flexform.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
     <ROOT type="array">
          <type>array</type>
          <el type="array">
               <image>
                    <TCEforms>
                         <label>Bild</label>
                         <config>
                         <type>input</type>
                         <eval>trim</eval>
                         <default></default>
                         <wizards type="array">
                              <_PADDING>2</_PADDING>
                              <link type="array">
                                   <type>popup</type>
                                   <title>Bild</title>
                                   <icon>link_popup.gif</icon>
                                   <script>browse_links.php?mode=wizard&amp;act=file</script>
                                   <params type="array">
                                        <blindLinkOptions>page,url,mail,spec</blindLinkOptions>
                                        <allowedExtensions>jpg,png,gif,jpeg</allowedExtensions>
                                   </params>
                                   <JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars=1</JSopenParams>
                              </link>
                         </wizards>
                         </config>
                    </TCEforms>
               </image>
               <text type="array">
                    <TCEforms type="array">
                         <config type="array">
                              <type>text</type>
                              <cols>40</cols>
                              <rows>5</rows>
                              <eval>trim</eval>
                         </config>
                         <label>Text</label>
                    </TCEforms>
               </text>
          </el>
     </ROOT>
</T3DataStructure>

2. TypoScript
Auf "columns" wird vollständig verzichtet. Wir haben ja keinen Inhalt auszugeben. Dafür erstellen wir über stdWrap ein neues cObject, das dann direkt auf die flexform-Felder zugreift.

tt_content.gridelements_pi1.20.10.setup {
     # ID of gridelement // eLearning 2 Spalter
     8 < temp.gridelements.defaultGridSetup
     8 {
          stdWrap.cObject = COA
          stdWrap.cObject {
               10 = TEXT
               10 {
                    data = field:flexform_text
                    wrap = <div class="citeContent"><p>|</p></div>
               }
               20 = IMAGE
               20 {
                    file {
                         import.data = field:flexform_image
                         width = 265
                    }
               }
          }
          wrap = <div class="citeWrapper clearfix">|</div>
     }
}
zappzarapp ·

Hallo,

ist zwar schon etwas älter aber ich habe zwei Fragen dazu:

1) Ist es möglich in dem stdWrap.cObject auch auf auf zB das header field des tt_content zuzugreifen? Ich habe es mit

20 = TEXT
20.field = header

probiert - aber das hat nicht funktioniert.

2) Gibt es eine Möglichkeit die Inhalte aus dem Flexform im Seitenmodul in der Übersicht sichtbar zu machen? (so wie bei Text/Text mit Bild Elementen die Inhalte zu sehen sind)

lg Matthias