MetaModels/Snippets

Aus Contao Community Documentation


Snippets

Eine Sammlung hilfreicher Codeschnipsel für MetaModels

Darstellung im Frontend

Individueller Detaillink

Mit einem Eintrag in die /system/langconfig.php ist es möglich, jedem MetaModel einen individuell angepassten Detaillink zu geben.

Beispiel:

$GLOBALS['TL_LANG']['MSC']['mm_meinmetamodel']['details'] = 'Mein Linktext';

Wert vorbelegen

Mit einem Eintrag in die /system/config/dcaconfig.php kann man Werte für Eingabefelder im Backend vorbelegen - beispielsweise ein Datiumsfeld mit dem aktúellen Datum:

$GLOBALS['TL_DCA']['mm_meinmetamodel']['fields']['meinattribut']['default'] = time();

Templates

Links im Template zusammenbauen

Oft kommt es vor, dass man Detaillinks anpassen möchte - zum Beispiel im Multidomainkontext, oder falls man von der Übersichtsseite eines MetaModels A auf die Detailseite des Metamodels B springen möchte.

Grundsätzlich stehen in Contao dazu eine Reihe von Systemvariablen oder Insert-Tags zur Verfügung, die mann ggf. auch noch mit eigenen Insert-Tags (oder selbstdefinierten Variablen) erweitern kann. Einen Detailink kann man daher auch gut aufbauen, wenn man das Feld Alias eines referenzierten Metamodels nutzt.

Grundaufbau eines Links könnte dann sein:

<a href="{{env::url}}/<sprachvariable>/<pfad/zur/detailseite>/<Alias-von-MetaModel-2>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a>

Im Zusammenspiel beispielsweise mit der Erweiterung Inherit_Insert_Tags kann man dabei Variablen für das Sprachkürzel definieren oder einen individuellen Link zum Unterverzeichnis erstellen. Das Beispiel sieht dann wie folgt aus:

<a href="{{env::url}}/{{iit::langvar}}/{{iit::detailpath}}/<?php echo $tags['mein_aliastag']; ?>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a>

Bildunterschrift (Caption) in einer Galerie mit ausgeben

Will man die Bildunterschriften aus der Dateiverwaltung in einer Galerie mit ausgeben, kann man folgende Ergänzung im Template "mm_attr_file.html5" eintragen:

<?php if (is_array($this->src)): ?> <ul> <?php foreach($this->src as $arrFile): $strTitle = ($arrFile['title']) ? $arrFile['title'] : (($arrFile['alt']) ? $arrFile['alt'] : $arrFile['file']); $strAlt = ($arrFile['caption']) ? $arrFile['caption'] : ''; ?> <li class="<?php echo $arrFile['class']; ?>"> <?php if ($this->settings->get('file_showLink')): ?> <?php if ($this->settings->get('file_showImage')): ?> <a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['file']; ?>"> <?php else: ?> <a title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['url']; ?>"> <?php endif; ?> <?php endif; ?> <?php if ($this->settings->get('file_showImage')): ?> <?php if ($arrFile['isGdImage']): ?> <?php echo $this->generateImage($arrFile['src'], $strAlt); ?> <?php endif; ?> <?php else: ?> <img src="<?php echo $arrFile['icon']; ?>" alt="<?php echo $strAlt; ?>" /> <?php echo $strTitle; ?> <span class="size"><?php echo $arrFile['sizetext']; ?></span> <?php endif; ?> <?php if ($this->settings->get('file_showLink')): ?> </a> <?php endif; ?> <figcaption><?php echo $arrFile['caption']; ?></figcaption> </li> <?php endforeach; ?> </ul> <?php endif; ?>

Dieser Codesnippet <figcaption><?php echo $arrFile['caption']; ?></figcaption> wird vor dem schliessenden li integriert. Nun werden die Bildunterschriften in der Galerie mit ausgegeben.

Ansichten
Meine Werkzeuge

Contao Community Documentation

IRC -> einziger fortlaufend sich selbst aktualisierender Comic.

Tristan Lins
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge