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

Programmierer brauchen viel Bit, auch wenn es Beck's ist.

Christian Schiffler
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge