Modul Layout ändern (modChrome Funktion) - JYAML - Joomla! Templates mit Yaml

There are no translations available

Modul Layout ändern (modChrome Funktion) 

Joomla! hat bereits verschiedene Möglichkeiten integriert wie man ein Modul mittels dem style Attribut im Template ausgeben kann. Es ist das HTML-Gerüst um einen Modulinhalt herum gemeint.

Mit der neuen modChrome Erweiterung lassen sich diese Modul Styles erweitern. Benutzt wird hierfür die modules.php die sich im Template Verzeichnis html befindet. 

Vom Joomla! 1.5 werden bereits folgende Styles zu Verfügung gestellt. Für die Neugierigen unter euch sind die Funktionen in /templates/system/html/modules.php zu finden.

Style Funktionsname Beschreibung
none modChtome_none()

Gibt den reinen Modulinhalt ohne Titel aus. Es wird also nichts drum herum gebaut.

xhtml
modChrome_xhtml()

Dieser Style ist die Standardausgabe und wird meistens verwendet. Der Titel (<h3>) und der Inhalt wird in einem einfachen DIV ausgegeben und sieht wie folgt aus.  

<div class="moduletable[moduleclass_sfx]">
  <h3>Modul Title</h3> <!-- Je nach Einstellung ein oder aus -->
  Modul Inhalt
</div>
rounded  modChrome_rounded()

Die Ausgabe ist wie bei xhtml nur mit zusätzlich 3 verschachtelten DIV Elementen um Grafische Ecken erzeugen zu können.

<div class="module[moduleclass_sfx]">
  <div>
    <div>
      <div>
        <h3><?php echo $module->title; ?></h3>
        <?php echo $module->content; ?>
      </div>
    </div>
  </div>
</div>
table
modChrome_table()

Hier wird der Modultitel und Modulinhalt in einer Tabelle ausgegeben. Diesen Style sollte man in YAML nicht verwenden, da dies ein Rückschritt wäre. Dieser Style ist eigentlich auch nur noch aus Kompatibilitätsgründen (Legacy Mode) enthalten.

horz modChrome_horz()

Ebenfalls wie table, nur dass bei mehr als einem eingeblendeten Modul diese Horizontal dargestellt werden. Verschachtelt wird intern mit der Funktion modChrome_table. Ebenfalls nur noch aus Kompatibilitätsgründen enthalten. In der Neuzeit von modernen CSS-Layouts sollte man float-Umgebungen benutzen, so wie es die YAML-Subtemplates bereits machen.

Es gibt noch ein weiteres Style Attribut Namens outline. Das ist aber ausschließlich der Vorschau für die Modulpositionen vorbehalten (index.php?tp=1). Deswegen nicht weiter relevant.

Im YAML Joomla Template ist bereits ein weitere modChrome Funktion enthalten. Das Style Attribut nennt sich yaml. Mit diesem kann man den Header Level des Titels festlegen. Dazu muss man in der Konfiguration der Template Positionen bei "Erweiterte Attribute" zum Beispiel headerLevel="2" eingeben. Dann wird der Modultitel als H2-Tag ausgegeben.

Eingene Styles hinzufügen

Öffnen Sie hierzu die /html/modules.php des Templates. Eigentlich kann dann auch schon bei der vorhandenen Funktion modChorme_yaml sehen wie es sein soll. Folgend eine Funktion als Referenz.

function modChrome_StyleName($module, &$params, &$attribs)
{
  $attribName = isset($attribs['attribName']) ? $attribs['attribName'] : 'attribName';
    
  if ($module->content) : ?>
    <div class="floatbox module<?php echo $params->get('moduleclass_sfx'); ?>">
      <?php if ($module->showtitle) : ?>
        <h3><?php echo $module->title; ?></h3>
      <?php endif; ?>
      <?php echo $module->content; ?>
    </div>
  <?php endif;
} 

Würde man die Funktion jetzt 1 zu 1 in die modules.php kopieren, dann würde in der Konfiguration der Positionen bei Style ein "StyleName (modChrome)" in der Liste erscheinen.

Näher wird vorerst nicht darauf eingegangen. Mit etwas PHP-Kenntnissen kommt man sowieso damit klar.