Validierungsfehler bei Joomla – Modulen

Viele Programmierer legen kein großen Wert auf die Validierung des HTML –Standards.
Der häufigste Fehler ist, dass die Stylesheets – Angaben einfach im Body geladen werden.
Die entsprechende Datei meistens mit dem Namen default.php im Modul öffnen.
Wenn es ein tmpl Verzeichnis gibt dann dort die default.php öffnen.

Fehlerhafte Einbindung eines Stylesheet-Links

<link rel="stylesheet" href="/<?php echo $modURL; ?>/css/<?php echo $color ?>.css" type="text/css" media="screen"/>

Die Stylesheet-Anweisung wird im body-Bereich eingebunden, es kommt zu einem Validierungsfehler.

Die richtige Einbindung ist:

<?php $document = JFactory::getDocument();
$document ->addStyleSheet(JURI::base() . 'modules/mod_je_accordionmenu/css/'.$color.'.css ');
?>

Mit dieser PHP Anweisung wird das Stylesheet im Head-Bereich eingebunden.

Weitere Fehler...
<style>
ul#je_accmenu, ul#je_accmenu ul {list-style-type:none; margin: 0; padding: 0;}
ul#je_accmenu li.accab { position:absolute; top:-100%; left:-100%}
.....
</style>

In dem Fall wird der Stylesheet-Block im body-Bereich eingebunden.

Die richtige Einbindung ist:
<?php
$doc = JFactory::getDocument();
$doc->addStyleDeclaration( '
ul#je_accmenu, ul#je_accmenu ul {list-style-type:none; margin: 0; padding: 0;}
ul#je_accmenu li.accab { position:absolute; top:-100%; left:-100%}
' );
?>

Wichtig! Das PHP-Konstrukt an das Ende der Datei verschieben.
Manche Module funktionieren sonst nicht richtig.

Mit dieser Anweisung wird erreicht, dass ein Stylesheet-Block im Head-Bereich des Dokumentes erstellt bzw. ausgelagert wird.
 

Sollte es Probleme mit diesen Vorgehensweisen geben, kann man die Stylesheet-Anweisung
auch im Html einfügen.
z.B.

<ul id="je_accmenu" class="je_accmenu<?php echo $class_sfx;?> style="style-type:none; margin: 0; padding: 0;"  

Stylesheet-Anweisung in Variablen:

Auch hier kann man genauso verfahren:

z.B.

$moduleWidth = $params->get( 'moduleWidth', ' ' );
Im HTML die Variable in einer PHP-Echo Anweisung setzen.
<?php echo $moduleWidth; ?>

Mit der echo-Anweisung wird der Inhalt der Variablen dargestellt.
In einem Stylesheet-Block
width:'.$moduleWidth.'; Zwischen   '. .'  werden die Zeichen in der Variable dargestellt.

Fehlende Bildbeschreibung

<img src="/images/<?php echo $backgroundImage; ?>" alt=" " />
<img src="/images/<?php echo $foregroundImage; ?>" alt=" " />

In diesem Beispiel fehlen die Bildbeschreibungen.

In den Variablen $backgroundImage (hintergrund.jpg)  und $foregroundImage (vordergrund.pnp) stehen die Bildnamen.
Mit den nächsten PHP Anweisungen  preg_replace  wird der Bildtyp entfernt.

<?php
$ohnejpg = preg_replace("/.jpg/","",$backgroundImage);
$ohnepng = preg_replace("/.png/","",$foregroundImage);
?>

Die Variablen mit der Echo - Anweisung  in das HTML einfügen

$backgroundImage; ?>" alt="<?php echo $ohnejpg; ?>" />
<img src="/images/<?php echo $foregroundImage; ?>" alt="<?php echo $ohnepng; ?>" />