Ausgabe der Attributs-Beschreibung im Template

Im Listentemplate steht über den Knoten attributes der Name bzw. die Bezeichnung eines Attributs zur Verfügung.

Möchte man aber zusätzlich auch einen Zugriff auf die Beschreibung aus den Attributseinstellungen haben, so kann man folgende Anpassung im Template metamodels_prerendered.html5 vornehmen:

 1<?php
 2
 3/**
 4 * Add description.
 5 */
 6
 7use Contao\System;
 8use MetaModels\IMetaModel;
 9
10/** @var IMetaModel $model */
11$model      = $this->items->getItem()->getMetaModel();
12$attributes = $model->getAttributes();
13
14$attributeDescriptions = [];
15foreach ($attributes as $attribute) {
16    if (empty($attribute->getColName())) {
17        continue;
18    }
19    $attributeDescriptions[$attribute->getColName()] = $attribute->get('description');
20}
21
22// Debug.
23if (System::getContainer()->get('kernel')->isDebug()) {
24    dump($this->data);
25}
26?>
27<?php if (\count($this->data)): ?>
28    <div class="layout_full">
29// ....

Zur Erklärung: mit $this->items->getItem() holen wir uns ein Item - da die Attributsangaben immer gleich bleiben, reicht ein Item um das MetaModel abzufragen und darüber dessen Attribute. Das foreach ist nur zur leichteren Handhabung im weiteren Template. Das Ganze könnte man auch schöner in einen Helper auslagern - siehe Vortrag CK23

In der weiteren Ausgabe kann man die Beschreibung über den Spaltennamen des Attributs ausgeben -
z. B. <?= $attributeDescriptions['firstname'] ?? '' ?>

Bei mehrsprachigen Models wird die zur FE-Sprache passende Beschreibung ausgegeben.