Mootools in Joomla!-Templates entfernen
Als Webdesigner solltest du selbst entscheiden können, welche JavaScript-Bibliothek du für ein Projekt verwendest. Mit dem Release von Joomla! 1.6 wird dir die Entscheidung abgenommen und Mootools zwangsweise als bevorzugte Bibliothek geladen. Eine Bevormundung. Mit wenig Zeilen Code im Template bekommst du die Herrschaft über deine Seite wieder zurück.

Der Hintergrund
Die wichtigste Datei des Joomla!-Templates ist die index.php, zu finden unter templates/TEMPLATENAME/index.php. Hier laufen sämtliche Dateien zusammen und über die Joomla!-API werden alle nötigen Styles und Scripte von Erweiterungen in den Header geladen. Das geschieht über folgende Zeile:
<jdoc:include type="head" />
Diese Zeile veranlasst also, dass auch Mootools geladen wird. Doch wie bleibt diese Bibliothek außen vor?
Die Idee
Bevor alle Scripte geladen werden, fragst du ab, ob ein Script namens Mootools dabei ist. Dieses Script soll übersprungen und anschließend die anderen Scripte geladen werden.
Der Code
Über die Joomla!-API lädst du die Header-Daten in eine Variable und schaust Zeile für Zeile nach ob Mootools mit dabei ist. Ist das nicht der Fall, soll das Script geladen werden, ansonsten wird der Vorgang übersprungen.
$headerstuff = $this->getHeadData();
$scripts = $headerstuff['scripts'];
$headerstuff['scripts'] = array();
foreach($scripts as $url=>$type) {
if (strpos($url, 'mootools') === false) {
$headerstuff['scripts'][$url] = $type;
}
}
$this->setHeadData($headerstuff);
Dieser Code ist ein PHP-Code; am besten platzierst du ihn am Anfang der Datei index.php zwischen <?php und ?>.
Die Erweiterung
Mit dieser Vorgehensweise kannst du alle Scripte, die über Joomla! geladen werden, herausnehmen, z. B. auch die Datei caption.js. Dazu änderst Du den Ausdruck der if-Anweisung.
strpos($url, 'caption') === false
Mit der Suche nach dem Bestandteil der zu ladenen Datei kannst Du sie herausnehmen. Kombinationen sind möglich. Um Mootools und die Datei caption.js herauszunehmen, nimmst Du folgenden Code als Ausdruck der if-Anweisung:
strpos($url, 'mootools') === false && strpos($url, 'caption') === false
Zweimal Kaufmannsund && verbindet die beiden Ausdrücke. Frohes Schaffen.
Kommentare (4)
Sven
Das führt dazu, dass dann die Komponente nicht funktioniert, oder die Comp die Core datei nachladen muss und sich dann wieder mit dem jQuery oder sonstwas kappeln, da erfahrungsgemäß die meistens Templates dann den gleichen Operator verwenden …
Alexander Schmidt
php Anfänger
Versuche seit 2 Tagen, diese Zwangsbeglückung "mootools" loszuwerden, Dein Script funktioniert einwandfrei:-)
Hab mir ein eigenes Template gebastelt, mit rounded corners, sprites usw. und die größte Bremse waren diese mootools.
Natürlich muss man dann auch auf einige extensions , plugins usw. verzichten, aber die Ladezeit von 1.4 Sekunden (Standard- Joomla > 6 Sekunden firstload), ist es mir wert.
lg
Philipp
Habe den Code für eine Seite benötigt, deren installierte Komponenten auf jquery zurückgreiffen.