Dma elementgenerator: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(ExtInfo)
 
(8 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
  
 
{{ExtInfo
 
{{ExtInfo
| Dev=Carsten Kollmeier
+
| Dev=DMA (Carsten Kollmeier, Janosch Skuplik)
| DevSite=http://www.ckollmeier.de/
+
| DevSite=http://www.dma.do/
| ExtVersion=0.0.1 beta2
+
| ExtVersion=0.0.3 alpha1
| Version=ab 2.7
+
| Version=ab 2.9
| TLVersion=2.7.6 - 2.8.3
+
| TLVersion=2.7.6 - 2.11.4
| ERLink=http://www.contao.org/erweiterungsliste/view/dma_elementgenerator.14.de.html
+
| ERLink=http://www.contao.org/erweiterungsliste/view/dma_elementgenerator.html
 
| Forum=http://www.contao-community.de/showthread.php?6119-dma_elementgenerator-Contentelemente-und-Frontendmodule-generieren
 
| Forum=http://www.contao-community.de/showthread.php?6119-dma_elementgenerator-Contentelemente-und-Frontendmodule-generieren
 
}}
 
}}
Zeile 33: Zeile 33:
 
Als nächstes legt man ein Textfeld an und füllt es folgendermaßen aus:
 
Als nächstes legt man ein Textfeld an und füllt es folgendermaßen aus:
 
<br />
 
<br />
 +
Textfeld:<br />
 
Beschriftung = Titel<br />
 
Beschriftung = Titel<br />
 
Feldname = titel<br />
 
Feldname = titel<br />
Beschreibung = Bitte vergeben Sie für das Buch einen Titel
+
Beschreibung = Bitte vergeben Sie für das Buch einen Titel<br />
  
Danach ein Textarea mit diesen Daten:
+
Textfeld:<br />
<br />
+
Beschriftung = Autor<br />
 +
Feldname = autor<br />
 +
Beschreibung = Bitte vergeben Sie für das Buch einen Autor<br />
 +
 
 +
Textfeld:<br />
 +
Beschriftung = Verlag<br />
 +
Feldname = verlag<br />
 +
Beschreibung = Bitte vergeben Sie für das Buch einen Verlag<br />
 +
 
 +
Textfeld:<br />
 +
Beschriftung = Alter<br />
 +
Feldname = alter<br />
 +
Beschreibung = Bitte nennen Sie, für welches Alter das Buch geeignet ist<br />
 +
 
 +
Textfeld:<br />
 +
Beschriftung = Form<br />
 +
Feldname = form<br />
 +
Beschreibung = Bitte nennen Sie, welche Form das Buch aufweist<br />
 +
 
 +
Textarea:<br />
 
Beschriftung = Beschreibung<br />
 
Beschriftung = Beschreibung<br />
 
Feldname = beschreibung<br />
 
Feldname = beschreibung<br />
Zeile 45: Zeile 65:
 
Spalten = 100<br />
 
Spalten = 100<br />
  
Letzlich noch ein Feld "Dateiauswahl" zur Generierung eines Bildes:<br />
+
Dateiauswahl:<br />
 
Beschriftung = Bild<br />
 
Beschriftung = Bild<br />
 
Feldname = bild<br />
 
Feldname = bild<br />
Zeile 58: Zeile 78:
 
<source lang="php">
 
<source lang="php">
 
<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?>
 
<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?>
  <?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
+
<?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
  
  <h1><?php echo $this->elements['titel']; ?></h1>
 
  
<?php if ($this->elements['bild']): ?>
 
  <!-- teaserstart -->
 
      <div class="image_container">
 
        <img src="<?php echo $this->elements['bild']; ?>" alt="<?php echo $this->elements['titel']; ?>" width="150" />
 
      <div class="caption"><?php if ($this->elements['titel']): ?>
 
        <?php echo $this->elements['titel']; ?><?php endif; ?></div>
 
      </div>
 
  <!-- teaserend -->
 
<?php endif; ?>
 
  
<div>
+
 
  <!-- teaserstart -->  
+
<h1><?php echo $this->elements['titel']; ?></h1>
      <?php if ($this->elements['beschreibung']): ?><?php echo nl2br($this->elements['beschreibung']); ?><?php endif; ?>
+
 
  <!-- teaserend -->
+
 
</div>
+
<div class="left">
  </div>
+
<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>
 +
 
 +
 
 
</source>
 
</source>
 
<br />
 
<br />
 
In dem Template wird das Bild in einer Breite von 150 Pixel ausgegeben, die Bildunterschrift gibt den Titel wieder.
 
In dem Template wird das Bild in einer Breite von 150 Pixel ausgegeben, die Bildunterschrift gibt den Titel wieder.
 
<br />
 
<br />
 +
 
== Buch als Inhaltselement integrieren ==
 
== 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.  
 
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:
 +
 +
<source lang="php">
 +
<?php foreach(deserialize($this->elements['gallery'], true) as $bild): ?>
 +
<img src="<?php echo $bild; ?>" />
 +
<?php endforeach; ?> 
 +
</source>
 +
 +
Hierzu muss das serialisierte Array zunächst deserialisiert werden und kann dann über eine foreach Schleife schließlich ausgegeben werden. Das Beispiel ist absichtlich sehr einfach gehalten.
  
 
----
 
----
 
--[[Benutzer:Carino|Carino]] 21:00, 07. Sept. 2010 (UTC)
 
--[[Benutzer:Carino|Carino]] 21:00, 07. Sept. 2010 (UTC)

Aktuelle Version vom 3. Juli 2012, 15:09 Uhr


Erweiterungs-Übersicht
Name des Entwicklers DMA (Carsten Kollmeier, Janosch Skuplik)
Entwickler Webseite http://www.dma.do/
Version der Erweiterung 0.0.3 alpha1
Kompatibilität mit Contao Version ab 2.9
Kompatibilität mit TYPOlight Version 2.7.6 - 2.11.4
Link zum Extension Repository http://www.contao.org/erweiterungsliste/view/dma_elementgenerator.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 serialisierte 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

Toflar hat mich gestern entjungfert! ... er hat meinen ersten PR gemerged.

Kim Wormer
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge