Dma elementgenerator

Aus Contao Community Documentation


Erweiterungs-Übersicht
Name des Entwicklers Carsten Kollmeier
Entwickler Webseite http://www.ckollmeier.de/
Version der Erweiterung 0.0.1 beta2
Kompatibilität mit Contao Version ab 2.9
Kompatibilität mit TYPOlight Version 2.7.6 - 2.8.3
Link zum Extension Repository http://www.contao.org/erweiterungsliste/view/dma_elementgenerator.14.de.html


Der Elementgenerator bietet eine Möglichkeit, Daten in einem vorgegebenem Layout auszugeben.

Beispiel / Tutorial

Element erstellen

Nach der erfolgreichen Installation wählt man zunächst den neuen Menüpunkt "Elementgenerator" unterhalb von Layout.
An dieser Stelle lassen sich Elemente erstellen, die völlig unabhängig voneinander strukturierte Inhalte ausgeben. Man klickt also auf die Schaltfläche "Neues Element" und füllt die Maske wie folgt aus:
Bezeichnung = Buch
Kategorie = Layouts
Template = dma_eg_default (temporär)
Als Inhaltselement bereitstellen auswählen

Die Bezeichnung dient nur der internen Verwaltung im Backend. Auch der Name der Kategorie ist frei wählbar und ordnet die Datensätze mit gleicher Bezeichnung innerhalb der Auswahl des Elementtyps im Bereich der Inhaltselemente. Das Template lässt man vorübergehend so, bis man später ein eigenes Template für den Datensatz erstellt.
Der Datensatz lässt sich selbstverständlich auch als Modul bereitstellen. Somit kann man diesen beispielsweise auch direkt im Seitenlayout verlinken.

Felder hinzufügen

Nun legt man die Felder an, die man ausgeben möchte. Die Auswahl ähnelt der von Formularen: Legende, Textfeld, Textarea, Auswahlliste, Checkboxen, Radiobuttons, Seitenauswahl, Dateiauswahl
Als nächstes legt man ein Textfeld an und füllt es folgendermaßen aus:
Textfeld:
Beschriftung = Titel
Feldname = titel
Beschreibung = Bitte vergeben Sie für das Buch einen Titel

Textfeld:
Beschriftung = Autor
Feldname = autor
Beschreibung = Bitte vergeben Sie für das Buch einen Autor

Textfeld:
Beschriftung = Verlag
Feldname = verlag
Beschreibung = Bitte vergeben Sie für das Buch einen Verlag

Textfeld:
Beschriftung = Alter
Feldname = alter
Beschreibung = Bitte nennen Sie, für welches Alter das Buch geeignet ist

Textfeld:
Beschriftung = Form
Feldname = form
Beschreibung = Bitte nennen Sie, welche Form das Buch aufweist

Textarea:
Beschriftung = Beschreibung
Feldname = beschreibung
Beschreibung = Bitte beschreiben Sie das Buch
Zeilen = 5
Spalten = 100

Dateiauswahl:
Beschriftung = Bild
Feldname = bild
Beschreibung = Wählen Sie ein Bild aus
Vorgabe = (hier könnte man ein Default-Bild angeben)
Art der Auswahl = ft_radio
Pfad = Pfad/zum/Bild.jpg

Template anlegen

Nun liegt ein Datensatz vor mit drei Feldern, die man in einem Template abfragen möchte. Unter Layout/Templates leget man ein neues Template auf Basis des Originaltemplates "dma_eg_default.tpl" und weist diesem das jeweilige Zielverzeichnis zu. Nach dem Speichern kann über "bearbeiten" der Name geändert werden (z.B. in dma_eg_buchvorstellung.tpl) und natürlich muss man dieses neue Template unter "Elementgenerator/Buch" gegen das Standardtemplate ersetzen.

<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?>
<?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
 
 
 
 
	<h1><?php echo $this->elements['titel']; ?></h1>
 
 
		<div class="left">
			<table>
				<tbody>
					<tr><td class="first"><?php if ($this->elements['titel']): ?><?php echo $this->labels['titel']; ?>:</td><td class="last"><?php echo $this->elements['titel']; ?><?php endif; ?></td></tr>
					<tr><td class="first"><?php if ($this->elements['autor']): ?><?php echo $this->labels['autor']; ?>:</td><td class="last"><?php echo $this->elements['autor']; ?><?php endif; ?></td></tr>
					<tr><td class="first"><?php if ($this->elements['verlag']): ?><?php echo $this->labels['verlag']; ?>:</td><td class="last"><?php echo $this->elements['verlag']; ?><?php endif; ?></td></tr>
					<tr><td class="first"><?php if ($this->elements['alter']): ?><?php echo $this->labels['alter']; ?>:</td><td class="last"><?php echo $this->elements['alter']; ?><?php endif; ?></td></tr>
					<tr><td class="first"><?php if ($this->elements['form']): ?><?php echo $this->labels['form']; ?>:</td><td class="last"><?php echo $this->elements['form']; ?><?php endif; ?></td></tr>
				</tbody>
			</table>
		</div>
 
		<?php if ($this->elements['bild']): ?>
	<div class="right">
			<!-- teaserstart --><div class="image_container">
				<img src="<?php echo $this->elements['bild']; ?>" alt="<?php echo $this->elements['name']; ?>" width="150" />
 
<div class="caption"><?php if ($this->elements['titel']): ?><?php echo $this->elements['titel']; ?><?php endif; ?></div>
		</div><!-- teaserend --></div></div>
		<?php endif; ?>
 
		<div class="twocol"><!-- teaserstart --> <?php if ($this->elements['beschreibung']): ?><?php echo nl2br($this->elements['beschreibung']); ?><?php endif; ?><!-- teaserend --></div>
	</div>


In dem Template wird das Bild in einer Breite von 150 Pixel ausgegeben, die Bildunterschrift gibt den Titel wieder.

Buch als Inhaltselement integrieren

In der Artikelstruktur lässt sich nun dieses Inhaltelement "Buch" wie jeder andere Elementtyp dem Artikel hinzufügen. Wählt man diese nun aus, findet man die drei Felder vor, die nun auszufüllen sind und kann den Datensatz nun Speichern und betrachten.

Bildergalerie darstellen

Hier ein Codeschnipsel, wie man im Template auf die Bilddaten im Falle einer Galerie zugreift:

<?php foreach(deserialize($this->elements['gallery'], true) as $bild): ?>
<img src="<?php echo $bild; ?>" />
<?php endforeach; ?>

Hierzu muss das serilisierte Array zunächst deserialisiert werden und kann dann über eine foreach Schleife schließlich ausgegeben werden. Das Beispiel ist absichtlich sehr einfach gehalten.


--Carino 21:00, 07. Sept. 2010 (UTC)

Ansichten
Meine Werkzeuge

Contao Community Documentation

ich hook' mich gleich in die Abstraktion

Martin Mildner
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge