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.