Joomla! Programmierung/Programmierung/Templates/Template J15/modules.php
Mit der modules.php können eigene Module Chrome erstellt werden. Dazu müssen Sie im Ordner
html in Ihrem Template eine
modules.php erstellen. In dieser Datei können Sie dann eigene styles für die Modulausgabe definieren.
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung
<?php function modChrome_STYLE( $module, $params, $attribs ) { /* Modul Chrome Ausgabe */ } ?>
Indem Sie eine Funktion function modChrome_STYLE erstellen, können Sie in Ihrem Template diese Ausgabe als style für Ihre Module verwenden, wobei STYLE der Name des Module Chromes ist. In dem Modul haben Sie Zugriff auf alle Eigenschaften des Moduls.
[Bearbeiten] Variablen
In der Funktion haben Sie folgende Variablen zur Verfügung:
[Bearbeiten] $module
Dieses stdClass Objekt enthält alle Grundinformationen über das Modul:
- [id] => Die ID des Moduls
- [title] => Der Titel des Moduls
- [module] => das genutzte Modul
- [position] => Die Position, auf der das Modul veröffentlicht worden ist
- [content] => Die Ausgabe des Moduls
- [showtitle] => Der Parameter, ob der Titel des Moduls angezeigt werden soll (1) oder nicht (0)
- [control] =>
- [params] => Parameter als raw
- [user] =>
- [name] => Der Name des genutzten Moduls
- [style] => Das genutzte Style
[Bearbeiten] $params
Dieses JParameter Objekt enthält alle Parameter des Moduls. Es ist zum Beispiel möglich im Backend von Joomla! ein Modul Klassen Suffix zu definieren, das dann in $params als moduleclass_sfx verfügbar ist. Um ein <div> mit einer vom Modul Klassen Suffix abhängigen Klasse zu erstellen können Sie folgenden Code nutzen:
<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ); ?>"> <!-- div Ausgabe --> </div>
[Bearbeiten] $attribs
Es ist möglich, dass Sie der Module Chrome Funktion in Ihrem Template weitere Attribute mitgeben. Diese Attribute sind dann in dem Array $attribs verfügbar. So ist es zum Beispiel möglich mit einem Module Chrome verschiedene Ausgaben zu erzwingen.
[Bearbeiten] Beispiel
<jdoc:include type="modules" name="menu" style="xhtml" headerLevel="2" class="blue" />In diesem Beispiel würde das Array $attribs folgende Werte enthalten:
- [name] => menu
- [style] => xhtml
- [headerLevel] => 2
- [class] => blue
[Bearbeiten] PHP im Module Chrome
Die Funktion ist eine normale PHP Funktion, somit kann jeder beliebige PHP Code verwendet werden. Ein gebräuchliches Beispiel ist das Nutzen des if Statements um den Wert von $module->showtitle zu überprüfe. Dann kann je nach Wertigkeit der Titel eingeblendet werden oder nicht:
<?php if ($module->showtitle) { echo '<h2>' .$module->title .'</h2>'; } ?>
[Bearbeiten] Quellcode
<?php // start Funktion function modChrome_custom( $module, $params, $attribs ) { // Überprüfen, ob "headerLevel" gesetzt ist if (isset( $attribs['headerLevel'] )) { $headerLevel = $attribs['headerLevel']; } else { // default "3" $headerLevel = 3; } // Überprüfen, ob "class" gesetzt ist if (isset( $attribs['class'] )) { $class = $attribs['class']; } else { // default "blue" $class = 'blue'; } // umschließendes div mit Modul Klassen Suffix echo '<div class="' .$params->get( 'moduleclass_sfx' ) .'" >'; // Überprüfen, ob der Titel angezeigt wird if ($module->showtitle) { // Titel ausgeben echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>'; } // Content des Moduls ausgeben echo '<div class="' .$class.'">'; echo $module->content; echo '</div>'; // Ende umschließendes div echo '</div>'; } ?>
Die Werte für class und headerLevel werden im <jdoc:include /> Statement gesetzt. Falls kein Wert gesetzt worden ist, werden als default "blue" und "3" genommen.
<jdoc:include /> Statement
|
Ausgabe |
|---|---|
|
|
<div> <h3><!-- Modul Titel --></h3> <div class="blue"> <!-- Modul Ausgabe --> </div> </div> |
|
|
<div> <h3><!-- Modul Titel --></h3> <div class="green"> <!-- Modul Ausgabe --> </div> </div> |
|
|
<div> <h1><!-- Modul Titel --></h1> <div class="yellow"> <!-- Modul Ausgabe --> </div> </div> |