tutorials.de Buch-Aktion 05/2012
  • Webmaster & Internet

    Webmaster & Internet
  • Joomla – Javascripte per Modul laden

    Hallo,
    so nun mein erstes Joomla Tutorial.
    In diesem geht es darum wie ich Javascript für jede Unterseite angepasst meinem Template hinzufüge ohne das diese global auf jeder Seite geladen werden.
    Als erstes fügen wir unserer templateDetails.xml eine neue Position hinzu:
    Code xml:
    1
    
    <position>script</position>

    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE install PUBLIC "-//Joomla! 1.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/1.5/template-install.dtd">
    <install version="1.5" type="template">
        <name></name>
        <creationDate></creationDate>
        <author></author>
        <authorEmail></authorEmail>
        <authorUrl></authorUrl>
        <copyright></copyright>
        <license></license>
        <version></version>
        <description></description>
        <files>
            …
            <filename>index.html</filename>
            <filename>index.php</filename>
            <filename>params.ini</filename>
            <filename>templateDetails.xml</filename>
            <filename>template_thumbnail.png</filename>
            <filename>favicon.ico</filename>
        </files>
        <positions>
            …
            <position>script</position>
        </positions>
        <params>
        </params>
    </install>

    Damit bekommen wir im Joomla Backend eine neue Position zum Laden von Modulen.

    Um nun die Javascripte dann auch ins Template geladen werden müssen wir nun noch in der index.php, diese befindet sich im Templateordner, ein jdoc statement hinzufügen:
    HTML-Code:
    <jdoc:include type="modules" name="script" style="none" />
    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
    <head>
    <jdoc:include type="head" />
    <?php
    $headerstuff=$this->getHeadData();
    reset($headerstuff ['scripts']);
    unset($headerstuff ['scripts'][$this->baseurl . '/media/system/js/mootools.js']);
    unset($headerstuff ['scripts'][$this->baseurl . '/media/system/js/caption.js']);
    $this->setHeadData($headerstuff);
    ?>
    <!-- CSS -->
    <link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
    </head>
    <body><!-- Modul Javascript -->
    <jdoc:include type="modules" name="script" style="none" />
    </body>
    </html>
    Die befindet sich am besten am Ende der Seite. Also vor dem schließenden Body-Tag.
    Warum das so sinnvoll ist könnt Ihr hier nachlesen
    Nun haben wir alle Vorbereitungen getroffen um das Joomla Backend zu verwenden.
    Hier gehen wir nun im Menü auf „Erweiterungen>Module“ und fügen über den Link „Neu“ ein neues Modul hinzu.


    Im nun auftauchenden Auswahlmenü nehmen wir das Modul „Eigene Inhalte (Leeres Modul)“.

    Hier vergeben wir nun einen Titel, z.B. Javascipts, und wählen die vorher erzeugte Position „script“ aus. Ganz wichtig, nicht vergessen das Modul auch zu veröffentlichen!

    Damit nun die Javascripte nicht auf jeder Seite geladen werden kann man das Modul nun über die Menüzuweisung verschiedenen Menüpunkten und somit auch deren Artikel zuweisen.

    In den Editor schreibt Ihr nun eure Scripte. Wie das geht hängt von eurem Editor ab.
    Im standard Joomla-Editor TinyMCE müsst Ihr auf den HTML-Button klicken. Aber Achtung vorher muss das Codecleaning ausgeschaltet werden. Hier auch mal mit den Filtereinstellungen von Joomla beschäftigen. Ich bevorzuge den JCE-Editor, auch hier muß erst Javascript erlaubt werden.



    Nun müßt Ihr nur noch das Modul speichern und Ihr habt das Javascript in eure Seite eingebunden.

    Überprüfen könnt Ihr das nun wenn Ihr eure Vorschau neu ladet und euch den Quellcode anzeigen lasst (im Firefox strg+u, im Safari cmd+alt+u).

    HTML-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" >
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <meta name="robots" content="index, follow" />
      <meta name="keywords" content="joomla, Joomla" />
      <meta name="title" content="Referenzen Test" />
      <meta name="author" content="Administrator" />
      <meta name="description" content="Joomla! - dynamische Portal-Engine und Content-Management-System" />
      <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />
      <title>Tutorial Test</title>
    
      <link href="/joomla1.5/templates/tutorial_template/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    
    <!-- CSS -->
    <link rel="stylesheet" href="/joomla1.5/templates/tutorial_template/css/template.css" type="text/css" />
    </head>
    <body><!-- Module Javascript -->
    <script src="/joomla1.5/templates/tutorial_template/js/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    // <!&#91;CDATA&#91;    
        alert ('Achtung', 'blablablablablabla');
    // &#93;&#93;>
    </script>
    </body>
    </html>
    Das Vorgehen läßt sich natürlich nun noch etwas weitertreiben wenn Ihr z.B. jQuery und verschiedene Plugins in eurem Template verwenden wollt, könnt Ihr für jede Datei ein eigenes Modul erzeugen und alle auf die Modulposition „script“ laden. Mit dem Dropdownmenü Reihenfolge läßt dann noch steuern in welcher Reihenfolge die Scripte an die Position geladen werden sollen.

    Da ich hier ja Scripte mit jQuery angesprochen habe hier noch ein Link wie Ihr die Mootoolsbibliothek und deren Caption aus Joomla entfernt ohne dass das Backend betroffen ist.

    So ich hoffe euch hat das Tutorial ein wenig geholfen.

    Viele Grüße,
    Jan
    Markus Kolletzky, smileyml und ComFreek bedanken sich. 


    Kommentare 2 Kommentare
    1. Avatar von ComFreek
      ComFreek -
      Also im Prinzip bindest du JavaScript-Code als ein Modul ein.
      Bis jetzt habe ich den JS-Code eigentlich immer in den Quelltext von einem Artikel geschrieben, aber diese Lösung ist natürlich eleganter.
    1. Avatar von Jan-Frederik Stieler
      Jan-Frederik Stieler -
      Ja, das hatte ich auch immer bis ich auf die Idee gekommen bin das über Module zu machen.
      Hält die Artikel sauber und ich hab die JS-Dateien eben wirklich am Ende der Seite.
    Kommentare Kommentar schreiben

    Klicke hier, um dich anzumelden

    Welche Farbe hat eine reife Zitrone?