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