Tipps und Tricks Filter

Daten/Variablen innerhalb eines Templates

Bei der Fehlersuche warum ein Wert im Template nicht angezeigt wird oder ein "if" Abfrage nicht greift, kann es sinnvoll sein sich alle Daten anzeigen zu lassen die im Template zur Verfügung stehen. Dazu einfach vorübergehend im Template (möglichst am Anfang) folgende Zeile einfügen:

<?php echo $this->showTemplateVars(); ?>

Das könnte dann folgende Ausgaben haben (Ausschnitt):

Array
(
    [listItem] => Array
        (
            [date] => Array
                (
                    [name] => date
                    [label] => Datum
                    [content] => 11.10.2008 15:44
                )
            ... 
            [fld_text] => Array
                (
                    [name] => fld_text
                    [label] => Name
                    [content] => Thomas Kuhn
                )
        )
	... 
)

Um nun z.B. gezielt den Wert des Feldes 'fld_text' auszugeben, verwendet man folgenden Syntax:

<?php echo $this->listItem['fld_text']['content']; ?>

Um nun nicht das Design der Seite zu stören ist die Ausgabe innerhalb eines HMTL-Kommentars eine Alternative.

Aber Achtung: Dabei kann es leicht vergessen werden diesen wieder zu entfernen. Auf öffentliche Seiten stellt dies ein Sicherheitsrisiko dar. Zugangsdaten könnten sichtbar werden!

Ausgabe von $GLOBALS

Eine weitere Möglichkeit ist die Ausgabe von

$GLOBALS,

oder Teile davon:

$GLOBALS['TL_CONFIG']
$GLOBALS['_SESSION']
$GLOBALS['objPage']

vorzugsweise formatiert ausgegeben:

<?php echo '<pre>' . print_r($GLOBALS) . '</pre>'; ?>

Ausgabe über TL_DEBUG im Debug Modus

Das mit print_r und echo '<pre>' ist immer etwas mühsam und verhaut das gesamte Layout. Daher gibt es auch noch:

$GLOBALS['TL_DEBUG']

Wenn man irgend wo auf der Seite debuggen muss, kann man das Array, die Variable, ... einfach an das oben genannte Array hinzufügen und Contao gibt das ganze dann unten bei den Debugging Infos aus.

$GLOBALS['TL_DEBUG']['meineVariable'] = $meineVariable;


Innerhalb einer Schleife für alle die jeweils aktuelle Variable:

$GLOBALS['TL_DEBUG']['meineVariable'][] = $aktuelleVariable;

Der Vorteil dabei ist einfach nur weniger Tipp-Arbeit und eine bessere Übersicht, da man ja mehrere Werte dranhängen kann und so Vergleiche machen kann.

Dafür muss jedoch der Contao Debug-Modus im Backend aktiviert sein.

Ausgabe nur für Admins per Cookie

In Livesystemen ist die Ausgabe weniger sinnvoll aber manchmal notwendig. Kein normaler Surfer sollte die Ausgaben jedoch mitbekommen. Eine Möglichkeit wäre es, dass mit Firefox und den Add-ons "Firebug" und "Firecookie" zu steuern. In Firecookie setzt man sich eine Cookie-Variable wie "mydebug" mit einem Passwort, das Häkchen "Sitzung" dabei ankreuzen. Wer noch sicherer gehen will, nimmt ein md5-hash als Passwort oder den "encryptionKey" aus der jeweiligen Contao Installation.

Hier nun der vereinfachte Beispielcode dafür.

<?php if($_COOKIE["mydebug"]=="46c5e3bbae4f72c"): ?>
    <h2>Debug-Ausgabe</h2>
    <pre>
    <?php echo $this->showTemplateVars(); ?>
    </pre>
<?php endif; ?>