Joomla! Programmierung/Programmierung/Komponenten/Front/tmpl

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[Bearbeiten] Ziel

Die Templatedatei eines Views ist für die Ausgabe zuständig. Hier werden einfach alle vom View generierten Daten mittels HTML strukturiert und danach ausgegeben.

[Bearbeiten] Grundlegendes

Die Templatedateien eines Views befinden sich im Ordner Folder blue.png tmpl, der sich wiederum im Ordner des jeweiligen Views befindet. Standardmäßig erwartet Joomla! eine File php.png default.php. Durch den Parameter layout kann dies jedoch in der Url angepasst werden.

index.php?option=com_komponentenname&view=viewname&layout=layoutname

In diesem Fall wird anstatt einer File php.png default.php die Datei File php.png layoutname.php erwartet. Wenn kein layout übergeben wird, so wird die default.php geladen. Somit sind folgende zwei Aufrufe identisch:

index.php?option=com_komponentenname&view=viewname&layout=default
index.php?option=com_komponentenname&view=viewname

Die Templatedatei sollte möglichst nur zur Ausgabe von Daten genutzt werden, da dies theoretisch die Sicherheit erhöht. Die Templatedatei ist die einzige Datei im View, die per Override vom Template überschrieben werden kann.

[Bearbeiten] default.php - die Templatedatei

Für die Darstellung der Gästebuchtexte wird die Standarddatei File php.png default.php genutzt. Erstellen Sie diese Datei im Ordner Folder blue.png tmpl in Ihrem jnafu View. Damit erhalten Sie folgende Ordnerstruktur:

Folder blue.png com_jnafu

|_ Folder blue.png assets
|_ Folder blue.png controllers
|_ Folder blue.png models
|_ File php.png jnafu.php
|_ Folder blue.png views
|_ Folder blue.png jnafu
|_ Folder blue.png tmpl
|_ File php.png default.php
|_ File php.png view.html.php

[Bearbeiten] Erste Hackversuche unterbinden

Wie in jeder anderen Joomla! Datei sollten Sie als erstes einen Schutz einbauen, der Direktzugriffe auf die Datei unterbindet:

// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');

[Bearbeiten] Einträge ausgeben

Als nächstes werden einfach mittels einer foreach Schleife alle Einträge untereinander ausgegeben. Die Email wird mittels JHTMLEmail::cloak für Bots verschlüsselt. Die Homepage wird mittels JHTML::link zu einem Link umgewandelt und das Datum wird mit JHTML::date entsprechend der installierten Sprache formatiert.

<?php
// Testen, ob Einträge vorhanden sind
if(isset($this->entries) && count($this->entries)):
 
    // Einträge durchgehen
    foreach ($this->entries as $entry) :
?>
        <div id="jnafuentry<?php echo $entry->id; ?>" class="jnafuentry">
            <div class="jnafuinfo">
                <span class="jnafuauthor">
                    <?php echo $entry->author; ?>
                </span>
                <span class="jnafuemail">
                    <?php echo $entry->show_email? JHTML::_('email.clock', $entry->email) : ''; ?>
                </span>
                <span class="jnafuhomepage">
                    <?php echo strlen($entry->homepage)? JHTML::_('link', $entry->homepage, JText::_('Homepage')) : ''; ?>
                </span>
                <span class="jnafudate">
                    <?php echo JHTML::_('date', $entry->date); ?>
                </span>
            </div>
            <div class="jnafuentry">
                <?php echo $entry->text; ?>
            </div>
        </div>
<?php
    endforeach;
?>

[Bearbeiten] Der komplette Quellcode

<?php
/**
 * @author      Joomla!-Nafu
 * @authorurl   http://www.joomla-nafu.de
 * @version     0.1
 * @license     GNU General Public License, http://www.gnu.org/licenses/gpl-2.0.html
 *
 * JNafu! - Joomla! 1.5.x Gästebuch Demo Komponente
 * Copyright (C) 2009 - Joomla!-Nafu
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, see <http://www.gnu.org/licenses/>.
**/
 
// Verhindern, dass die Datei direkt aufgerufen wird
defined('_JEXEC') or die('Restricted access');
 
// Testen, ob Einträge vorhanden sind
if(isset($this->entries) && count($this->entries)):
 
    // Einträge durchgehen
    foreach ($this->entries as $entry) :
?>
        <div id="jnafuentry<?php echo $entry->id; ?>" class="jnafuentry">
            <div class="jnafuinfo">
                <span class="jnafuauthor">
                    <?php echo $entry->author; /* Autor ausgeben */ ?>
                </span>
                <span class="jnafuemail">
                    <?php echo $entry->show_email? JHTML::_('email.clock', $entry->email) : ''; ?>
                </span>
                <span class="jnafuhomepage">
                    <?php echo strlen($entry->homepage)? JHTML::_('link', $entry->homepage, JText::_('Homepage')) : ''; ?>
                </span>
                <span class="jnafudate">
                    <?php echo JHTML::_('date', $entry->date); ?>
                </span>
            </div>
            <div class="jnafuentry">
                <?php echo $entry->text; ?>
            </div>
        </div>
<?php
    endforeach;
?>

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge