les modules n'apparaissent plus

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] les modules n'apparaissent plus

    Bonjour

    Je suis en train de travailler à la mise en place d'un template de A à Z sur joomla 3 en suivant quelques tutos trouvés sur la toile. Mon site est en local, je m'entraîne.

    Mais voilà, j'ai un souci.

    J'ai un header avec une image en background dans lequel j'ai installé trois positions en haut à droite pour y insérer des modules. Depuis hier, je ne vois plus ces modules apparaître sur le site alors qu'ils apparaissaient avant.

    Dans firebug, mon header semble vide : <header></header> mais les fichiers php et css liés sont codés, rien n'a changé.

    Quand je fais la prévi avec ?tp=1, les trois positions de modules avec les modules apparaissent mais dès que je quitte ce mode, n'apparaît plus que l'image du header.

    Avez-vous une idée ?

  • #2
    Re : les modules n'apparaissent plus

    Salut
    Tes modules sont bien publiés sur toutes les pages ?
    Auto-entrepreneur spécialiste Joomla https://www.stylitek.com

    Joomladay 2023 https://www.joomladay.fr/ 2 jours à ne pas manquer

    Commentaire


    • #3
      Re : les modules n'apparaissent plus

      oui sur toutes les pages

      Commentaire


      • #4
        Re : les modules n'apparaissent plus

        Quel code utilises-tu pour appeler tes modules dans ton template ?
        Auto-entrepreneur spécialiste Joomla https://www.stylitek.com

        Joomladay 2023 https://www.joomladay.fr/ 2 jours à ne pas manquer

        Commentaire


        • #5
          Re : les modules n'apparaissent plus

          code que j'utilise :

          <header>
          <?php if ($this->countModules( 'top' )) : ?>
          <div id="top">
          <div class="top"> <jdoc:include type="modules" name="top-1" style="xhtml"/> </div>
          <div class="top"> <jdoc:include type="modules" name="top-2" style="xhtml"/> </div>
          <div class="top"> <jdoc:include type="modules" name="top-3" style="xhtml"/> </div>
          </div>
          <?php endif; ?>
          </header>

          Commentaire


          • #6
            Re : les modules n'apparaissent plus

            Bonjour Lunne de Corail,

            Tu testes le nombre de modules dans la position top alors que tes positions sont top-1, top-2 et top-3.

            Remplace la ligne
            Code HTML:
            <?php if ($this->countModules( 'top' )) : ?>
            Par
            Code HTML:
            <?php if($this->countModules('top-1') || $this->countModules('top-2') || $this->countModules('top-3')) : ?>
            Amicalement,
            Rajoz

            Commentaire


            • #7
              Re : les modules n'apparaissent plus

              J'ai écrit ceci dans le code, est-ce correct (ou bien y'a-t-il des lignes inutiles) ?

              Code PHP:
              <header>
              <div id="top">
              <?php if($this->countModules('top-1') || $this->countModules('top-2') || $this->countModules('top-3')) : ?>
               <div class="top"> <jdoc:include type="modules" name="top-1" style="xhtml"/> </div>
              <div class="top"> <jdoc:include type="modules" name="top-2" style="xhtml"/> </div>
              <div class="top"> <jdoc:include type="modules" name="top-3" style="xhtml"/> </div>
              </div>
              <?php endif; ?>
              </header>
              Pour l'instant, cela fonctionne à nouveau, merci pour ton aide

              Commentaire


              • #8
                Re : les modules n'apparaissent plus

                Bonjour Lunne de Corail,

                Le diction du jour : "Il n'y a pas de bon ou de mauvais code, il n'y que du code qui correspond ou pas à ce que l'on veut faire."

                Je vais commencer par te signaler une anomalie dans ton code que tu n'as probablement pas vu parce que tu n'indiques pas l'indentation. Perso, j'utilise Notepad++ qui indente automatiquement. Les traits verticaux montrent que tu as croisé le div et le if. S'il n'y a pas de module dans le header, il restera une balise div non fermée.
                Code HTML:
                <header>
                     <div id="top">
                     |   <?php if($this->countModules('top-1') || $this->countModules('top-2') || $this->countModules('top-3')) : ?>
                     |   |   <div class="top"> <jdoc:include type="modules" name="top-1" style="xhtml"/> </div>
                     |   |   <div class="top"> <jdoc:include type="modules" name="top-2" style="xhtml"/> </div>
                     |   |   <div class="top"> <jdoc:include type="modules" name="top-3" style="xhtml"/> </div>
                     |   </div>
                     <?php endif; ?>
                </header>
                Difficile de te conseiller sans savoir exactement ce que tu veux faire (disposition et rôle des positions, css qui sera créé, utilisation ou pas d'un framework comme Bootstrap, etc.)

                Par exemple, si tu veux avoir plus de possibilités dans le contrôle des classes de chaque position cela pourrait donner :

                Code HTML:
                <header>
                    <?php if($this->countModules('top-1') || $this->countModules('top-2') || $this->countModules('top-3')) : ?>
                    <div id="top">
                
                        <?php if($this->countModules('top-1')) : ?>
                        <div class="top-1">
                            <jdoc:include type="modules" name="top-1" style="xhtml"/>
                        </div>
                        <?php endif; ?>
                
                        <?php if($this->countModules('top-2')) : ?>
                        <div class="top-2">
                            <jdoc:include type="modules" name="top-2" style="xhtml"/>
                        </div>
                        <?php endif; ?>
                
                        <?php if($this->countModules('top-3')) : ?>
                        <div class="top-3">
                            <jdoc:include type="modules" name="top-3" style="xhtml"/>
                        </div>
                        <?php endif; ?>
                
                    </div>
                    <?php endif; ?>
                </header>
                Notes :
                • <header> est l'élément de section au sens HTML5
                • le test global permet de savoir s'il y a un(des) module(s) dans les trois positions de cette section
                • s'il y a un(des) module(s) on applique l'id top qui va donner le style pour le groupe des trois positions
                • pour chacune des positions (top-1, top-2, top-3) :
                  • le test permet de savoir s'il y a un(des) module(s) dans la position concernée
                  • s'il y a un(des) module(s) on applique la classe spécifique de la position et on affiche les modules

                1) Si par exemple il n'y a un module en position top-1 et un autre en position top-3

                Le code que je propose génère le html :
                Code HTML:
                <header>
                    <div id="top">
                        <div class="top-1"> affichage du module avec le style xhtml </div>
                        <div class="top-3"> affichage du module avec le style xhtml </div>
                    </div>
                </header>
                Le code que tu as proposé génère le html :
                Code HTML:
                <header>
                    <div id="top">
                        <div class="top"> affichage du module avec le style xhtml </div>
                        <div class="top"></div>
                        <div class="top"> affichage du module avec le style xhtml </div>
                    </div>
                </header>
                Si les classes des positions ont une marge gauche droite pour séparer les modules, par exemple :
                #top .top-1, { margin: 0 10px; }
                Dans mon code : la marge entre top-1 et top-3 est de 20px
                Dans ton code : la marge entre top-1 et top-3 est de 40px parce ce qu'elle reste pour top-2 même si la position est vide. S'il n'y avait que le module en top-1 ce serait amplifié puisqu'il aurait à gauche une marge de 10px et à droite une marge de 50px.

                2) S'il n'y a aucun module dans aucune des positions du header

                Le code que je propose génère le html :
                Code HTML:
                <header>
                </header>
                Le code que tu as proposé génère le html :
                Code HTML:
                <header>
                    <div id="top">
                    </div>
                </header>
                Si l'id top est défini avec une marge en bas pour séparer le header du contenu, par exemple :
                #top { margin-bottom: 20px; }
                Dans mon code : les 20px ne vont pas apparaître
                Dans ton code : les 20px vont créer un espace en bas de ce header vide

                Les différences entre mon code et celui que tu as proposé dépendent des choix qui seront faits par ailleurs comme on le voit avec le css des exemples que j'ai choisi pour montrer les risques éventuels.

                Sur un autre plan, dans ce code c'est le style xhtml qui va s'appliquer par défaut aux modules. On peut appliquer dans le code un autre style par défaut en fonction des besoins. Je dis par défaut parce que le style peut aussi se configurer dans les paramètres des modules. Dans certains cas, comme par exemple une bannière ou un slider, il peut être nécessaire de ne pas avoir de style.
                On peut développer dans le template ses propres styles pour que tous les modules du site aient une cohérence de présentation. C'est dans le fichier templates/[nom-du-template]/html/modules.php. Tu peux voir dans Protostar qu'il y a deux styles, no (pas de style) et well (qui utilise la classe well de Bootstrap).
                Les styles par défaut de Joomla sont dans templates/system/html/modules.php. Dans ces styles tu verras par exemple que le style html5 gère plus de paramètres de module que xhtml.

                Permets-moi de te féliciter pour oser te mettre à la création de A à Z d'un template. Personnellement je ne l'ai jamais fait, j'ai toujours préféré partir d'une base existante (framework ou template) et la personnaliser, même si c'était parfois de façon très importante.

                Amicalement,
                Rajoz
                Dernière édition par Rajoz à 19/11/2014, 16h59

                Commentaire


                • #9
                  Re : les modules n'apparaissent plus

                  Bonjour Rajoz,

                  Merci pour cette explication qui m'a été très utile en effet, vu que je débute sur joomla.
                  Je pense qu'au vu de ce que je veux faire, le code que tu me proposes est plus à propos.
                  Je connais l'html5 et le css mais très peu le php mais je m'y mets par la force des choses, c'est pour ça que je patauge un peu... mais j'ai envie de pouvoir faire ce que je veux comme template, et je me rends compte que c'est possible.

                  En revanche, je ne connais pas les framework, il va falloir que je me penche sur le question.

                  Merci vraiment !!!

                  Commentaire

                  Annonce

                  Réduire
                  Aucune annonce pour le moment.

                  Partenaire de l'association

                  Réduire

                  Hébergeur Web PlanetHoster
                  Travaille ...
                  X