Zum Inhalt springen

Dynamic Content Elements (DCE)

Erstellt am 29. Juli 2012 · 91 Antworten · letzte Antwort am 14. Mai 2019 · Seite 5 von 5

Tags: Frage

onza ·

Versuche die Bildunterschriften im dce:fal Fluidtemplate auszugeben. Jemand Tipp? Vielen Dank!

<f:section name="main">
	<f:for each="{dce:fal(field:'img', contentObject:contentObject)}" as="fileReference">
	<figure>
		<f:image src="{fileReference.uid}" treatIdAsReference="1" />
	</figure>
	</f:for>
</f:section>
Sebastian S.​ ·

hallo forum,

kann man die Ext. DCE so aufbauen, dass man wie bei z.b. "gridelements" alle Datensätze und Dateien auslagern kann?

Habe gesehen, dass wenn ich einen DCE Datensatz angelegt habe, kann ich die "Vorlage" in eine Datei auslagern.
oder auch "Fluid Layout, Root-Verzeichnis" kann bearbeitet werden.

Doch ich möchte erst gar keinen Datensatz im Backend anlegen, sondern alles via typoscript, fluid, flexforms usw.

mit gridelements klappt die Auslagerung ziemlich gut!
geht das auch mit der DCE ?

Ich freue mich auf eine Antwort oder Hilfen 🙂
Sebastian

Niklas Lazinbee ·

@ onza

Bei mir sieht das so aus:

<figure class="imageSingleProduct">
	<f:image src="{fileReference.uid}" alt="{fileReference.description}" treatIdAsReference="1" maxWidth="580" />
	<f:if condition="{fileReference.description}">
		<figcaption>{fileReference.description}</figcaption>
	</f:if>
</figure>

Gruß Niklas
Wigald ·

Habe ein Update der Extension von 0.84 auf 1.04 vorgenommen jetzt werde ich bei jeder Speicherung im Backend von dieser Fehlermeldung:

#1289386765: Could not analyse class:Tx_Dce_ViewHelpers_ArrayGetIndexViewHelper maybe not loaded or no autoloader?

TYPO3\CMS\Extbase\Object\Container\Exception\UnknownObjectException thrown in file
/html/typo3/typo3_src-6.2.12/typo3/sysext/extbase/Classes/Object/Container/ClassInfoFactory.php in line 37.

begrüßt. Kann mir einer bitte einen kleinen Hinweis geben was sich verändert hat.

Grüße
Wigald

Wigald ·

Nett zu wissen das sich {namespace dce=Tx_Dce_ViewHelpers} in {namespace dce=ArminVieweg\Dce\ViewHelpers} geändert hat.

stereolake ·

Hallo Armin, hallo Rest 🙂

Erst einmal danke für die großartige Extension als auch für die wertvollen Tipps hier.

Ich hätte eine Frage zum Thema Ausgabe der System-Kategorien. Die waren ja hier auch schon Thema, aber gepostet wurde nur der Debug- und nicht der finale Ausgabe-Code.
Nach der Selektion, die auch funktioniert, soll die jeweilige Kategorie (Title-Array) ausgegeben werden. Wie löse ich das über die Array-Ausgabe im DCE-Template? Kann mir da wer weiter helfen?

Vielen Dank und viele Grüße,
Chris aus Köln

Konfiguration (funktioniert wie gewünscht):

<config>
<type>select</type>
<foreign_table>sys_category</foreign_table>
<size>6</size>
<dce_load_schema>1</dce_load_schema>
<multiple>1</multiple>
<minitems>0</minitems>
<maxitems>20</maxitems>
</config>

Template (noch unvollständig):

{namespace dce=ArminVieweg\Dce\ViewHelpers}
<f:layout name="None" />
<f:section name="main">
<div class="filter-element">
<dce:typolink parameter="{field.link}">
<h1>{field.title}</h1>
<p>{field.description}</p>
<p><f:debug>{field.category}</f:debug></p>
<f:for each="{dce:fal(field:'media', contentObject:contentObject)}" as="fileReference1">
<img src="fileadmin{fileReference1.identifier}" />
</f:for>
</dce:typolink>
</div>
</f:section>

Debug-Konsole:

array(1 item)
0 => array(28 items)
uid => '3' (1 chars)
pid => '21' (2 chars)

... (weitere Werte)

title => 'Filme' (5 chars)

... (weitere Werte)

Dimanoss ·

Hallo,
hat jemanden Erfahrung, den DCE als container für andere Content-types nutzen? Im DCE-Backend-Template versuche einfaches:

    <flux:grid>
         <flux:grid.row>            
              <flux:grid.column style="width: 33%">
                   <flux:form.content name="column1" label="33.3%" />
              </flux:grid.column>
              <flux:grid.column style="width: 66%">
                   <flux:form.content name="column2" label="66.6%" />
              </flux:grid.column>
         </flux:grid.row>
    </flux:grid>

, aber läuft's nicht... :-(

Armin, meiner Meinung: Container - einziges, was im DCE fehlt. Bequem und einfach. Super! :-)

stereolake ·

Endlich habe ich es mit den Systemkategorien hinbekommen. Werte eines Arrays kann man einfach durch die Punkt-Kombination ausgeben, z.B. category.title. category ist dabei ein expliziter Marker, der im DCE angelegt wurde, title (oder ein beliebig anderer Wert) lässt sich über den debug-Mode herausfinden.

<f:for each="{field.category}" as="category">
<h3>{category.title}</h3>
</f:for>

Das DCE ist dabei wie folgt definiert

<config>
<type>select</type>
<foreign_table>sys_category</foreign_table>
<size>6</size>
<multiple>1</multiple>
<minitems>0</minitems>
<maxitems>20</maxitems>
<dce_load_schema>1</dce_load_schema>
</config>

In Kombination mit isotope bzw. masonry brauchte ich die Systemkategorien auch noch als Klasse. Wichtig hierbei war, dass alle Umlaute und Sonderzeichen ersetzt werden.

Dabei hilft ein kleines Snippet

lib.replace = TEXT
lib.replace {
	current = 1
	field = title
	trim = 1
	case = lower
	replacement {
		10 {
			search.char = 32
			replace = -
		}
		20 {
			search = /(ä|Ä)/
			useRegExp = 1
			replace = ae
		}
		30 {
			search = /(ö|Ö)/
			useRegExp = 1
			replace = oe
		}
		40 {
			search = /(ü|Ü)/
			useRegExp = 1
			replace = ue
		}
		50 {
			search = ß
			replace = ss
		}
		60 {
			search = /\/\\\.\:\;\,\&/
			useRegExp = 1
			replace =
		}
	}
}

Und dieses wird ebenfalls im DCE-Template wie folgt eingesetzt

<div class="filter-item <f:cObject typoscriptObjectPath='lib.replace'>{category.title}</f:cObject>">
... Inhalt ...
</div>

Keine Ahnung, wie sauber die Lösung ist, aber sie funktioniert. 🙂
Vielleicht benötigt sie auch mal wer anders ...

Grüße,
Chris

andreaswalz ·

Hallo, ich komm grad nicht weiter, ich verwende eine Selectbox aus einer externen Tabelle, es wird dann automatisch der title als Auswahltext und die uid als Value ausgewählt, klappt alles, aber ich möchte den Auswahltext auch in der Ausgabe (fluid) verwenden, wie mache ich das, dass dann nicht nur 1 oder 2 (das ist mein uid) steht? Natürlich könnte ich das mit einer Condition hinbekommen, aber der Text soll ja aus der DB kommen und nicht im Template verborgen sein.
meine config sieht so aus (Standard):
<config>
<type>select</type>
<!-- uncomment this, if you want to add an empty option before -->
<!-- <items type="array">
<numIndex index="0" type="array">
<numIndex index="0"></numIndex>
<numIndex index="1"></numIndex>
</numIndex>
</items> -->
<foreign_table>tx_key1xxxxxxx</foreign_table>
<size>1</size>
<minitems>0</minitems>
<maxitems>1</maxitems>
</config>