Das eigentliche Grundgerüst der index.php ist auf den ersten Blick im groben nichts anderes als eine HTML Datei. Seht ihr euch die index.php ein wenig genauer an, erscheinen viele Joomla- eigene Schreibweisen nicht mehr so kryptisch.

 

Vielleicht vertieft ihr das Gelernte mit ein paar Übungen.

  1. eine extra css Datei neu erstellen und in das Template einbinden
  2. eine extra js Datei neu erstellen und in das Template einbinden
  3. Module Positionen in der templateDetails.xml erstellen, über das Backend mit Leben füllen und über das Template ausgeben lassen

Kaputt machen könnt ihr nichts, wenn ihr euch verlaufen habt, deinstalliert das Test-Template über das Backend und dann auch wieder installieren.

<?php 
/** Joomla-Templates.de - Test Template **/
defined( '_JEXEC' ) or die;?>
<?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
</head>
<body>
<div id="container">
  <header>
    <div class="headerlogo">
    <?php if ( $unser_header_bild = $this->params->get( 'unser_header_bild' ) ):
	if ( JFile::exists( $unser_header_bild ) ): ?>
	<img title="Logo" alt="Logo" src="/<?php echo $this->params->get('unser_header_bild');?>" />
    <?php endif; else: ?>
    Joomla-Templates.de
    <?php endif; ?>
    </div>
  </header>
  <nav>topmenu
    <jdoc:include type="modules" name="meine-topposition"/>
  </nav>
  <div id="main">
    <section id="left">left
      <jdoc:include type="modules" name="linke-position" style="XHTML" />      
    </section>
    <section id="content">
      <jdoc:include type="message" />
      <jdoc:include type="component" />
      <jdoc:include type="modules" name="so-soll-die-positon-heissen" style="XHTML" />
    </section>
    <div class="clear"></div>
    <footer>Footer
      <jdoc:include type="modules" name="zu-guter-letzt" style="" />
    </footer>
  </div>
</div>
</body>
</html>
 

Noch ein zusätzlicher Punkt

Wir haben intern angestrengt über das Thema "if count modules" diskutiert. Dies war in Joomla 1.0 permanenter Bestandteil eines jeden Templates. Die Logik des if count modules bedeutet in Worten: Wenn eine Module-Position via Backend nicht mit Inhalten belegt ist, mache die Seite breiter usw.

2 Meinungen waren Resultat der hitzigen Runde:

  • Die eine Meinung: Css kann man so flexibel einsetzen, dass es automatisch fehlende oder nicht publizierte Module ausgleicht.
    In der CSS-Sprache heißt das flexi oder dynamic Design.
  • Die andere Meinung: Es gibt immer wieder Momente in denen diese if Anweisung notwendig ist.

Okay, jede Meinung zählt da diese aus jahrelangen Erfahrungen resultiert. Für diesen kleinen Ausflug benötigen wir ein praktisches Beispiel wie es in der Praxis des öfteren vorkommt.

Wir haben eine rechte Spalte im Template in der wir normalerweise einen Textbeitrag (mod_costum) anzeigen. Der Beitrag Heute die wichtigsten Infos!

Wer hat schon jeden Tag im Jahr, seine wichtigsten Infos mitzuteilen? Heute die Nachricht von gestern ausgeben? Nee, ist nicht professionell. Eine leere Spalte? Naja, auch nicht so toll, schließlich erwarten die Stammleser, das an dieser Stelle was geschrieben steht.
Also bauen wir doch eine Werbepause ein, so wie sie auf fast jeder Webseite zu finden ist.

Zunächst definieren wir 2 neue Positionen in der templateDetails.xml

<position>neuigkeiten</position>
<position>werbepause</position>

In die index.php an die Stelle an der die Neuigkeiten ausgegeben werden sollen den folgenden Part so wie er ist.

<div id="neuigkeiten-oder-werbepause">
    <?php
        /* holen wir uns aus joomla die Position */
        $neuigkeiten = JModuleHelper::getModules( 'neuigkeiten' );
        /* prüfen wir ob hier inhalt freigeschalten wurde */
        if ( count( $neuigkeiten ) > 0 ): 
        /* jo, hier soll etwas mitgeteilt werden */
        ?>
        <jdoc:include type="modules" name="neuigkeiten" style="XHTML" />
        <?php else: 
        /*Nee, da war heute nichts relevantes freigeschalten, also geben wir die Werbepause aus*/
        ?>
        hier kann jede Art von Inhalten eingefügt werden, auch Seiten-Externe Snippets
        <jdoc:include type="modules" name="werbepause" style="XHTML" />
    <?php endif; ?>
</div>
  1. Nun ab ins Backend und 2 Module neu erstellen, eines in dem wir die Neuigkeiten ausgeben und eines mit der Werbung
  2. im Frontend Testen (es sollten die Neuigkeiten ausgegeben werden)
  3. zurück ins Backend
  4. das Neuigkeiten-Module deaktivieren
  5. ab ins Frontend und ein fröhlichen Browser-Refresh
  6. Nun sollte die Werbung angezeigt werden

Dieses Beispiel kann man endlos fortsetzen oder ändern. Der Kreativität sind keine Grenzen gesetzt. Letztendlich sollte hieraus hervorgehen wie der if count modules Trick funktioniert.

 

Update von Vorgängerversionen

Ähnlich wie auch bei der templateDetails.xmlbeschnkt sich die Änderung um unser Template lauffähig zu bekommen auf nur eine Kleinigkeit.

Joomla 1.6 bis Joomla 3.0

<?php defined( '_JEXEC' ) or die;?>
Publiziert in Tutorial