Hallo,
ich möchte gerne ebenfalls meine MetaModels Liste als Tabelle darstellen. Nur sollten die Tabellenfelder "automatisch" erzeugt werden, damit ich dieses Tabellentemplate "frei" nutzen kann. In der hier angegebenen Tabelle werden die Attribute für die Tabelle ja vorgegeben.
Mit meinen begrenzten "Fähigkeiten" habe ich mir jetzt das folgende Template zusammen gestrickt:
PHP-Code:
<?php $strRendersettings = ($this->settings)? 'settings' : 'view'; ?>
<?php if (count($this->data)): ?>
<div class="layout_full">
<table class="sortable ce_table" id="sortable">
<thead>
<?php
$i == 0;
?>
<?php foreach ($this->data as $arrItem): ?>
<?php
if ($i == 0):
?>
<tr class="item <?php echo $arrItem['class']; ?>">
<?php foreach ($arrItem['attributes'] as $field => $strName): ?>
<?php if (($strValue = $arrItem[$this->getFormat()][$field]) || ($strValue = $arrItem['text'][$field])): ?>
<th class="field <?php echo $field; ?> label">
<?php echo sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName); ?>
</th>
<?php endif; ?>
<?php endforeach; ?>
<?php if ($arrItem['jumpTo']['deep']): ?>
<th class="mm_details_th">Details:</th>
<?php endif; ?>
</tr>
<?php
$i++;
endif;
?>
<?php endforeach; ?>
</thead>
<tbody>
<?php foreach ($this->data as $arrItem): ?>
<tr class="item <?php echo $arrItem['class']; ?>">
<?php foreach ($arrItem['attributes'] as $field => $strName): ?>
<?php if (($strValue = $arrItem[$this->getFormat()][$field]) || ($strValue = $arrItem['text'][$field])): ?>
<td class="field <?php echo $field; ?> value">
<?php echo $strValue; ?>
</td>
<?php endif; ?>
<?php endforeach; ?>
<?php if ($arrItem['jumpTo']['deep']): ?>
<td><a href="<?php echo $arrItem['jumpTo']['url']; ?>"><?php echo $this->details; ?></a></td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php else: ?>
<p class="info"><?php echo $this->noItemsMsg; ?></p>
<?php endif; ?>
<!-- indexer::stop -->
<script type="text/javascript">
<!--//--><![CDATA[//><!--
window.addEvent('domready', function() {
new TableSort('sortable', '.', ',');
});
//--><!]]>
</script>
<!-- indexer::continue -->
Damit die Tabelle im Frontend noch sortierbar ist, und wie die üblichen Tabellen aussieht, habe ich auch noch die Klassen class="sortable ce_table" und die ID id="sortable" eingefügt. Zusätzlich am Ende das JavaScript.
Zusätzlich habe ich noch in das Seitenlayout unter Eigener Java-Script Code eingefügt:
Code:
<!-- indexer::stop -->
<link rel="stylesheet" href="plugins/tablesort/css/tablesort.css" type="text/css" media="screen" />
<script type="text/javascript" src="plugins/tablesort/js/tablesort.js"></script>
<!-- indexer::continue -->
Folgende Probleme habe ich jetzt noch:
1. Optimierung:
Ich bin davon überzeugt, dass der Code für die Ausgabe der Kopfzeile viel besser gelöst werden kann, weiß aber nicht wie.
2. Leere Felder
Wenn in einem Datensatz ein Feld leer bleibt, dann wird in der Tabelle kein leeres Tabellenfeld erzeugt, sondern die Einträge werden in der Zeile um ein Feld nach links verschoben.
3. Mehrere Einträge
Enthält ein Feld mehrere Einträge, z.B. beim Feld Mehrfachauswahl, dann rutscht meine Tabelle nach rechts. Hier müsste ich eine Lösung finden, damit die Einträge gemeinsam in ein Tabellenfeld geschrieben werden.
Würde mich freuen, wenn mir jemand bei der Umsetzung die entscheidenden Tipps geben könnte.
Viele Grüße
André
Lesezeichen