A propos de countModules()

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

  • A propos de countModules()

    Bonjour,

    Pour un template j'ai besoin d'avoir dynamiquement 1 ou 2 colonnes en fonction de l'affichage ou non de module dans une colonne, je fais donc :
    Code PHP:
    $this->countModules('left'
    Mais le soucis c'est que ma colonne est toujours affiché et pour cause il y a bien des modules affectés à cette position mais il ne contiennent rien par moment. Par exemple un module m'affiche les sous-menu d'un menu principal. Certains liens du menu principal n'ont pas de sous-menu et donc il faut que cette colonne ne soit pas affiché... Y a t'il un moyen de filtrer ça ? Par exemple faire un $this->countModules('contentLeft') AND (que les modules affichent bien du contenu)

    Merci de votre aide.
    www.weblogin.fr - Création, Référencement et Design de sites Internet.

  • #2
    Re : A propos de countModules()

    Salut,

    Pas très clair mais à priori c'est "if" que tu cherches ?

    <?php if($this->countModules('left')) { ?>{module 42}<?php } ?>

    Commentaire


    • #3
      Re : A propos de countModules()

      Bonjour,

      Tout n'est pas clair dans l'exposé du problème mais en général on utilise
      Code PHP:
      <?php if ( $this->countModules'left' ) ): ?>
          <div id="left">
              <jdoc:include type="modules" name="left"   />
          </div>
      <?php endif; ?>
      A adapter à la position désirée.
      Pas de demande de support par MP.
      S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

      Commentaire


      • #4
        Re : A propos de countModules()

        Oui c'est bien ce que j'utilisais jusqu’à présent mais dans mon cas ca ne fonctionne pas bien je vais vous expliquer un peu mieux :

        J'ai un template avec 2 colonnes seulement si il y a du contenu à afficher dans celle de droite, sinon il est (enfin doit être) sur 1 colonne. Pour ce faire j'utilise exactement comme toi Jisse03
        Code PHP:
        <?php if ( $this->countModules'left' ) ): ?>
            <div id="left">
                <jdoc:include type="modules" name="left"   />
            </div>
        <?php endif; ?>
        Mais mon soucis est que j'ai un module qui s'appelle Sous-Menu FR et un autre Sous-Menu EN. Ils sont appliqués a toutes les pages pour qu'ils s'affichent dynamiquement si il y a des sous-menus (pour ne pas avoir à les affecter a telle ou telle page a chaque création de sous-menu). Cela me permet d'avoir un menu principal de niveau 1 seulement en horizontal et tous les sous-menus du menu actif en vertical dans ma colonne. Truc très classique quoi. Pour donner un exemple : http://www.sonovente.com/amplis-effets-instruments/ Le menu de gauche change en fonction du menu principal en haut. Moi c'est pareil sauf que dès fois il n'y a pas de sous-menu.

        Mon soucis est donc, vu que mes modules sont positionné sur toutes les pages, quand je fais un countModules('left') il me sort toujours 2 car le module est bien affecté à cette page c'est juste qu'il n'a pas de contenu affiché car il n'y a pas de sous-menu pour certains élément de niveau 1.

        Donc il me faudrait vérifier l'output des modules avant de les afficher, voir s'il ne sont pas vide. Dans le modChrome_xhtml d'affichage des modules il existe ça
        Code PHP:
        if (!empty ($module->content)) { 
        Mais dans un template....

        J’espère avoir été un peu plus clair
        www.weblogin.fr - Création, Référencement et Design de sites Internet.

        Commentaire


        • #5
          Re : A propos de countModules()

          Le plus sage serait effectivement de faire une affectation "propre". En lui racontant d'afficher le module sur toute sles pages, même un chrome ne t'aiderait pas beaucoup, vu que pour le template, le header du module est quand même envoyé avant que chrome ne gère son contenu..

          Pour te simplifier la vie, la seule solution serait une sorte d'usine à gaz chargeant 2 fois la position, puis scannant son contenu, etc. ce qui est quand même moins efficace que de réaliser l'affectation correcte des modules selon les menus, même si cette opération te prend quelques minutes...
          Pas de demande de support par MP.
          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

          Commentaire


          • #6
            Re : A propos de countModules()

            Oui mais le soucis c'est pour l'utilisateur final (mon client) qui logiquement n'est pas expert Joomla et même avec une formation, voudrait que s'il créé un nouveau sous-menu il apparaisse seul sans avoir à lui affecter le module... Enfin les clients quoi
            www.weblogin.fr - Création, Référencement et Design de sites Internet.

            Commentaire


            • #7
              Re : A propos de countModules()

              Dans ce cas, il te reste à trouver un moyen (usine à gaz) pour lui éviter le minimum vital de formation...
              Mais ensuite, il risque de se plaindre du manque de performances du tout.
              Pas de demande de support par MP.
              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

              Commentaire


              • #8
                Re : A propos de countModules()

                Non non il aura la formation nécessaire comme tous ! Mais c'est juste que je connais déjà les plaintes comme quoi il faut plus d'automatisme dans le système donc je tente d'en trouver.
                www.weblogin.fr - Création, Référencement et Design de sites Internet.

                Commentaire


                • #9
                  Re : A propos de countModules()

                  Tu as une chance de t'en sortir avec css en n'appliquant aucune largeur à ta colonne, mais seulement à tes sous-menus.

                  Comme ça la colonne sera présente mais fera 0px de large, et si ton menu est présent se chargera de l'agrandir.

                  Sinon une solution en javascript.

                  Commentaire


                  • #10
                    Re : A propos de countModules()

                    Oui c'est la mon soucis c'est que la colonnes à un décors et un min-height appliqué... L'idée du javascript est bonne, en vérifiant le contenu de l'élément non vide ! Je vais tenter de creuser ça en parallèle de ma recherche en php. Merci pour l'idée.
                    www.weblogin.fr - Création, Référencement et Design de sites Internet.

                    Commentaire


                    • #11
                      Re : A propos de countModules()

                      Oui c'est la mon soucis c'est que la colonnes à un décors et un min-height appliqué...
                      Bah vire-les de ta colonne et applique-les à ton <ul>, où est le problème ?

                      Commentaire


                      • #12
                        Re : A propos de countModules()

                        Bon il semblerait que ce soit un soucis bien connu sur la Forge que les modules soit compté même si ils sont vide (exemple http://joomlacode.org/gf/project/joo..._item_id=12169)... J'ai vu quelques patch mais bon perdu après chaque mise à jour donc pas top. J'ai trouvé la fonction countMenuChildren pensant que ce serait bon : http://docs.joomla.org/JDocumentHTML...nuChildren/1.6

                        Mais elle me renvoie une erreur fatale. Avez vous déjà testé ? http://joomlacode.org/gf/project/joo..._item_id=27823
                        Il semblerait que ce soit un autre bug a patcher...
                        www.weblogin.fr - Création, Référencement et Design de sites Internet.

                        Commentaire


                        • #13
                          Re : A propos de countModules()

                          Bon après moult recherches j'ai trouvé une solution mais je voudrais votre approbation si c'est vraiment "bien" de faire ainsi (Notamment Jisse03 car je pense que c'est ce que tu appelais une usine a gaz). Donc en fait on parcours le module avec un Buffer pour vérifier s'il n'est pas vide :
                          Code PHP:
                          //
                          $contentLeftModules trim($this->getBuffer('modules''contentLeft', array('style'=>'xhtmlLeft')));
                          if(!empty(
                          $contentLeftModules)) {
                             echo 
                          "Pas vide";

                          Donc j'ai testé ça fonctionne bien mais bon je ne sais pas si c'est vraiment top, selon vous ? Dommage qu'il n'y ai pas un paramètre en plus dans le countModule pour compter ou non les modules vides et aussi que la fonction countMenuChildren plante sous Joomla 2.5

                          NB: Question bête mais j'ai jamais eu à le faire, ca ce fait de créer un helper pour un template sous Joomla ? Pour justement placer ça dans une fonction à part et l'appeler rapidement.

                          Merci
                          www.weblogin.fr - Création, Référencement et Design de sites Internet.

                          Commentaire


                          • #14
                            Re : A propos de countModules()

                            Envoyé par Abasedebasse Voir le message
                            Bon il semblerait que ce soit un soucis bien connu sur la Forge que les modules soit compté même si ils sont vide (exemple http://joomlacode.org/gf/project/joo..._item_id=12169)...
                            Rien à voir, concernanit Joomla! 1.5.

                            Envoyé par Abasedebasse Voir le message
                            J'ai vu quelques patch mais bon perdu après chaque mise à jour donc pas top. J'ai trouvé la fonction countMenuChildren pensant que ce serait bon : http://docs.joomla.org/JDocumentHTML...nuChildren/1.6
                            countMenuChildren() n'est pas une fonction, mais une méthode de la classe JDocument.
                            Pour l'utiliser dans ton template:
                            Code PHP:
                            $mydoc JFactory::getDocument() ;
                            $children $mydoc->countMenuChildren() ; 
                            Envoyé par Abasedebasse Voir le message
                            Mais elle me renvoie une erreur fatale. Avez vous déjà testé ? http://joomlacode.org/gf/project/joo..._item_id=27823
                            Il semblerait que ce soit un autre bug a patcher...
                            Ce bug a été corrigé depuis longtemps, le source contient ce patch depuis il me semble 2.5.2.
                            Dernière édition par jisse03 à 05/07/2012, 17h01
                            Pas de demande de support par MP.
                            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                            Commentaire


                            • #15
                              Re : A propos de countModules()

                              Oui mais tu es bien d'accord que countModule compte toujours les modules vide ?

                              Pour countMenuChildren j'ai bien fait ceci :
                              Code PHP:
                              $mydoc JFacrory::getDocument() ;
                              $children $mydoc->countMenuChildren() ; 
                              Et j'ai la même erreur que avant :
                              Code PHP:
                              NoticeUndefined variablequery in /libraries/joomla/document/html/html.php on line 491
                              Fatal error
                              Call to a member function getQuery() on a non-object in /libraries/joomla/document/html/html.php on line 491 
                              Logique puisque Query n'existe pas, le bug n'est pas corrigé. Regarde dans libraries/joomla/document/html/html.php ligne 491, il appelle $query->getQuery(true); mais aucune déclaration de $query. A moins que j'ai mal compris et que tu me dises d'appliquer ce patch ?

                              Merci
                              www.weblogin.fr - Création, Référencement et Design de sites Internet.

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X