Mootools in Joomla!-Templates entfernen

Geschrieben am 02. Februar 2011 von Alexander Schmidt 4 Kommentare

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.

logo-mootools

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.

Über den Autor

Alexander Schmidt

Alexander Schmidt ist Webentwickler, Buchautor und Dozent. Er lebt mit seiner Familie in Bad Nauheim / Hessen. Seit 2005 realisiert er als Einzelunternehmer Websites mit Joomla und hat sich sich auf hochwertige Template-Umsetzungen spezialisiert. Er ist Fachautor der Zeitschrift t3n.

 

 

Kommentare (4)

  • Sven

    Sven

    02 Februar 2011 um 12:12 |
    Sehr Intelligent wenn man bedenkt, dass viele native Komponenten auf das Core mootools zurückgreifen und extra darauf ausgelegt sind …
    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

      Alexander Schmidt

      02 Februar 2011 um 12:42 |
      Vor allen dann intelligent, wenn man keine der Standard-Komponenten verwendet oder alle Scripte, u. a. Mootools, ans Ende der Seite auslagert, um die Performance zu steigern.
  • php Anfänger

    php Anfänger

    24 Mai 2011 um 14:06 |
    Danke, Danke!
    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

    Philipp

    26 Juli 2011 um 21:20 |
    Super, vielen Dank für dieses Tutorial!

    Habe den Code für eine Seite benötigt, deren installierte Komponenten auf jquery zurückgreiffen.

Bitte Kommentar schreiben

Sie kommentieren als Gast.