Appel de fichier javascript dans template personnalisée

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Appel de fichier javascript dans template personnalisée

    Bonjour,

    Je fais quelques tests pour créer une template de zéro, et je cherche désespérément comment intégrer du Javascript à une template personnalisée. J'ai fouillé un peu partout sur le net, trouvé pleins de réponses, mais aucune n'a résolu le problème et mon javascript ne fonctionne que lorsque je l'intègre directement au fichier index.php.

    Le tuto pour créer la structure minimale de la template que j'ai suivi est celui-ci : https://docs.joomla.org/Creating_a_b...a!_template/fr

    J'ai tenté les solutions suivantes au fil des recherches :

    Récupéré à cette adresse : https://docs.joomla.org/Adding_JavaScript/fr
    Code:
    $document = JFactory::getDocument();
    $document->addScript('/media/system/js/script.js');
    Récupéré à cette adresse : https://docs.joomla.org/J3.x:Adding_...to_the_page/fr
    Code:
    $document->addScript($JUri::base() . 'templates/custom/js/script.js');
    Récupéré sur la template Protostar de base :
    Code:
    // Add template js
    JHtml::_('script', 'script.js', array('version' => 'auto', 'relative' => true));
    Voici l'architecture de mes fichiers :

    Templatevide
    -> index.php
    -> templateDetails.xml
    -> Fichier CSS
    ----> template.css
    -> Fichier DOCS
    -> Fichier IMAGES
    -> Fichier JS
    ----> script.js

    Voici le contenu du doc index.php :
    Code:
    <?php defined( '_JEXEC' ) or die( 'Restricted access' );
    
    // Add template js
    $document = JFactory::getDocument();
    $document->addScript('/media/system/js/script.js');
    
    ?>
    
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
       xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
    
        <head>
            <jdoc:include type="head" />
            <link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template; ?>/css/template.css" type="text/css" />
        </head>
    
        <body>
            <jdoc:include type="modules" name="test1" />  <!-- Position top -->
            CECI EST UN TEST
            <jdoc:include type="component" />
            <jdoc:include type="modules" name="test2" />  <!-- Position bottom -->
    
            <div class="ThisIsTesla" style="width:500px; height:300px; margin: 0 auto;"></div>
    
            <button id="changeColor" onclick="changeColorToBlue()" style="display:block; margin: 20px auto;">Colorer bleu</button>
    
    
    
        </body>
    
    </html>
    Le contenu du fichier script.js :
    Code:
    function changeColorToBlue(){
        document.getElementsByClassName('ThisIsTesla')[0].classList.add('colorBgBlue');
    }
    Le contenu du fichier template.css :
    Code:
    .ThisIsTesla{
        background-color: red;
    }
    
    .colorBgBlue{
        background-color:blue!important;
    }
    C'est probablement un truc tout bête de débutant, mais j'ai l'impression de tourner en rond sur les mêmes ressources sur internet depuis un certain temps. Merci d'avance.
    Dernière édition par Fireblist à 04/12/2019, 20h01

  • #2
    ...Ping? Quelqu'un? Je me permets de relancer le sujet, n'ayant pas eu de réponse, (problème de catégorisation du sujet dans le forum peut être?)

    Si une âme charitable veut bien me démêler le souci au dessus, je suis intéressé. L'alternative étant de prendre une template Joomla de base, et de la démonter jusqu'à la plus petite unité fonctionnellement en la dépouillant morceau par morceau de tout ses éléments, mais j'aurai la sensation de perdre en compréhension de la construction d'une template Joomla de 0, et juste recopier du pré-existant...

    Merci d'avance.

    Commentaire


    • #3
      Les différentes versions fonctionnent, mais l'important est de placer votre fichier dans le bon dossier.
      Si vous utilisez :

      $document->addScript('/media/system/js/script.js');

      vous devez placer votre fichier script.js dans le dossier "js" du dosssier "system" du dossier "media" à la racine de votre site. Mais comme vous voulez faire un template, il vaut mieux garder tous les fichiers de ce template dans son dossier racine.

      Donc utilisez plutôt
      $document->addScript('/templates/nom-du-dossier-de-votre-template/js/script.js');

      et personnellement, j'utilise plutôt
      $document->addScript(JUri::root() . 'templates/nom-du-dossier-de-votre-template/js/script.js');

      Il vaut souvent mieux avoir un chemin absolu pour ce genre de fichier.
      Tous les services pour les sites Joomla! : sécurité, nettoyage de sites piratés, hébergement, SEO, applications Fabrik, migration, compatibilité mobiles, accessibilité, ...
      Administrateur certifié Joomla! 3
      https://www.betterweb.fr

      Commentaire


      • #4
        Merci beaucoup de ton retour ! Avec les deux lignes addScript j'ai par contre la même erreur et la page ne charge plus. Ci-joint des screenshots de l'erreur et le screenshot de l'index.php sur un des deux cas. Apparemment addScript est appelé avec un paramètre non-existant. Est-ce qu'il ne comprend pas la partie du chemin absolue? est-ce qu'il ne comprend pas JURI:root()? Est-ce que le fait que cela soit sur un sous-domaine joue? Je ne sais pas...)

        Pour plus de détails, j'ai archivé les fichiers de la template et je les ai mis sur mon google drive afin qu'il soit possible de l'inspecter pour tout le monde, voici le lien : https://drive.google.com/drive/folde...c_?usp=sharing

        Fichiers joints

        Commentaire


        • #5
          Oui, je ne l'avais pas précisé, mais il faut bien sûr conserver la ligne

          $document = JFactory::getDocument();

          avant $document->add... , sinon l'objet $document n'existe pas.
          Tous les services pour les sites Joomla! : sécurité, nettoyage de sites piratés, hébergement, SEO, applications Fabrik, migration, compatibilité mobiles, accessibilité, ...
          Administrateur certifié Joomla! 3
          https://www.betterweb.fr

          Commentaire


          • #6
            Ouiiiiiiiiiiiiiii ! Ça marche ! Il est vivant ! VIVANT ! Euhm... Pardon. Merci beaucoup vraiment, je n'attendais plus de réponse et avoir une solution maintenant me remplit vraiment de joie.

            Juste une dernière question, les termes JFactory, getDocument, addScript... Je ne les connais pas. Et je n'arrive pas à me former parce que je trouve sur internet principalement des morceaux d'information me donnant "ce qu'il faut écrire pour que ça marche", mais pas d'où ça vient, si c'est un langage particulier, si c'est quelque part dans la doc de Joomla, et surtout, quels sont les prérequis pour comprendre ce qu'il y a derrière... Est-ce que vous auriez un début de piste à ce sujet?

            (et désolé, j'ai vu plus haut que vous aviez utilisé le vouvoiement, j'ai l'habitude du tutoiement sur internet, je n'avais pas fait attention)

            Quoi qu'il en soit, merci encore, et bonne journée à vous !

            Commentaire


            • #7
              Bonjour, Joomla est écrit dans un langage appelé PHP et utilise la programmation objet (JFactory étant la classe principale). Apprendre les bases de PHP est en effet un bon début pour profiter de ce CMS https://www.php.net/manual/fr/language.basic-syntax.php
              Dernière édition par chris67 à 15/12/2019, 18h29

              Commentaire


              • #8
                Cela tombe bien, j'étais justement au début d'un MOOC sur le PHP, j'avais reconnu quelques éléments du langage, mais je ne savais pas si autre chose était greffé dessus ! Merci beaucoup Chris ! Je sais maintenant dans quelle direction avancer

                Commentaire


                • #9
                  Bonne chance alors ! Si vous apprenez PHP et comment faire des substitutions (overrides) avec Joomla, vous pourrez modifier complètement l'aspect visuel de votre site https://docs.joomla.org/How_to_overr...oomla!_core/fr

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X