countmenuchildren??? savoir si un élément menu a des enfants?

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

  • countmenuchildren??? savoir si un élément menu a des enfants?

    Bonjour, j'essaye juste de savoir comment voir si un $item d'un menu a des enfants, il faut que je différencie les éléments qui ont des sous menus de ceux qui n'en ont pas dans le default_component.php. J'ai bien trouvé la fonction countMenuChildren() mais n'arrive pas à la faire fonctionner.
    Je suis quasi sur que cela fait partie des variables qui tournent dans les variables mais ne sais pas sous quelle dénomination.

    Merci.

  • #2
    Re : countmenuchildren??? savoir si un élément menu a des enfants?

    Bonjour,

    voila ce sujet

    Commentaire


    • #3
      Re : countmenuchildren??? savoir si un élément menu a des enfants?

      salut
      si tu es dans le code php, une requete sql du genre count(elements qui ont pour parent_id = ID)
      si count > 0 alors il a des enfants

      Idée tout con qui me vient en te lisant, je crois que la fonction countMenuChildren est assez spéciale (mais je me trompe peut etre)
      CEd
      Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
      http://www.template-creator.com Outil de création de templates
      Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

      Commentaire


      • #4
        Re : countmenuchildren??? savoir si un élément menu a des enfants?

        PS : ou alors si tu as déjà tous les élements du menu tu peux vérifier les niveaux , si n+1->level > n->level alors c'est un enfant
        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
        http://www.template-creator.com Outil de création de templates
        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

        Commentaire


        • #5
          Re : countmenuchildren??? savoir si un élément menu a des enfants?

          oui, merci over 007 mais cela ne correspond pas tout a fait à ce que je cherche, ced1870, c'est bien par la que je suis passé la premiere fois et cela fonctionne, j'ai inséré un petit bout de code qui vérifie dans base de données et cela fonctionne. Mon seul soucis est que le premier module fonctionne parfaitement mais j'ai besoin de répéter mon menu en bas de page et donc suis passé par un nouveau module menu qui renvoie le meme menu en bas de page, seulement, la répétition de ce code plante le systeme et n'affiche plus rien

          voila fonction incluse dans default_component.php ligne 23 :

          //recup category root
          $myID=$item->id;
          mysql_select_db($database_db, $connectdb);
          $query_CategoryRoot = "SELECT * FROM h2r_menu WHERE parent_id=$myID && published=1";
          $CategoryRoot = mysql_query($query_CategoryRoot, $connectdb) or die(mysql_error());
          $row_CategoryRoot = mysql_fetch_assoc($CategoryRoot);
          $totalRows_CategoryRoot = mysql_num_rows($CategoryRoot);

          if($totalRows_CategoryRoot>0){
          $toggle = ' data-toggle="dropdown"';
          }else{
          $toggle = '';
          }

          Commentaire


          • #6
            Re : countmenuchildren??? savoir si un élément menu a des enfants?

            et tu as jeté un oeil à cette suggestion ?
            PS : ou alors si tu as déjà tous les élements du menu tu peux vérifier les niveaux , si n+1->level > n->level alors c'est un enfant
            sinon tu peux faire sur le premier module avec ta requete :
            if($totalRows_CategoryRoot>0){
            $item->toggle = ' data-toggle="dropdown"';
            }else{
            $item->toggle = '';
            }
            et sur le 2e module vu que c'est le meme menu, et donc les memes items si j'ai compris, tu peux récupérer directement la valeur de $item->toggle sans refaire ta requête
            Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
            http://www.template-creator.com Outil de création de templates
            Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

            Commentaire


            • #7
              Re : countmenuchildren??? savoir si un élément menu a des enfants?

              la premiere suggestion est bien mais je ne cherche pas à savoir si l'élément est un enfant mais savoir s'il a des enfants...
              suggestion 2 ; oui mais le bout de code se trouve dans mon mod_menu/default_component.php, lorsque le deuxieme module appele le mod_menu, il relance la machine, les variables créées lors du premier module ne sont pas effacés?

              Commentaire


              • #8
                Re : countmenuchildren??? savoir si un élément menu a des enfants?

                en fait, dans mon code, c'est la partie

                //recup category root
                $myID=$item->id;
                mysql_select_db($database_db, $connectdb);
                $query_CategoryRoot = "SELECT * FROM h2r_menu WHERE parent_id=$myID && published=1";
                $CategoryRoot = mysql_query($query_CategoryRoot, $connectdb) or die(mysql_error());
                $row_CategoryRoot = mysql_fetch_assoc($CategoryRoot);
                $totalRows_CategoryRoot = mysql_num_rows($CategoryRoot);

                de requete qui semble bloquer un peu comme si mon $CategoryRoot étant donné qu'il existe déja ne peut pas se regénérer.

                Commentaire


                • #9
                  Re : countmenuchildren??? savoir si un élément menu a des enfants?

                  la premiere suggestion est bien mais je ne cherche pas à savoir si l'élément est un enfant mais savoir s'il a des enfants...
                  c'est bien ça.
                  si n+1->level > n->level
                  si le prochain item a un niveau plus élevé, c'est un enfant, donc l'item courant a des enfants. Logique ? ...
                  Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                  http://www.template-creator.com Outil de création de templates
                  Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                  Commentaire


                  • #10
                    Re : countmenuchildren??? savoir si un élément menu a des enfants?

                    SAlut Ced,
                    oui, je comprends bien la logique de la chose, c'est finalement ce que j'essayai de faire avec ma fonction old school avec query
                    $myID=$item->id;
                    mysql_select_db($database_db, $connectdb);
                    $query_CategoryRoot = "SELECT * FROM h2r_menu WHERE parent_id=$myID && published=1";
                    $CategoryRoot = mysql_query($query_CategoryRoot, $connectdb) or die(mysql_error());
                    $row_CategoryRoot = mysql_fetch_assoc($CategoryRoot);
                    $totalRows_CategoryRoot = mysql_num_rows($CategoryRoot);

                    if($totalRows_CategoryRoot>0){
                    $toggle = ' data-toggle="dropdown"';
                    }else{
                    $toggle = '';
                    }

                    mais j'ai simplement un soucis de script new school, ne comprends pas comment intégrer ta conditionnelle dans mon document parce qu'on se doute bien que
                    if(n+1->level > n->level){
                    $toggle = ' data-toggle="dropdown"';
                    }else{
                    $toggle = '';
                    }
                    ne fonctionne pas d'elle meme, ce serait un peu trop simple. La variable n équivaut à $item->id?

                    Commentaire


                    • #11
                      Re : countmenuchildren??? savoir si un élément menu a des enfants?

                      essaies un truc du genre

                      Code:
                      $i = 0;
                      foreach ($items as $item) {
                      $toggle = ( $items[$i+1]->level > $items[$i] ) ?  ' data-toggle="dropdown"' : '';
                      ... ici la suite de ton code pour l'item ...
                      $i++;
                      }
                      Dernière édition par ced1870 à 17/12/2014, 14h08
                      Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                      http://www.template-creator.com Outil de création de templates
                      Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                      Commentaire


                      • #12
                        Re : countmenuchildren??? savoir si un élément menu a des enfants?

                        réflexion faite , ceci serait mieux

                        Code:
                        $lastitem = '';
                        foreach ($items as & $item) {
                        if ($lastitem) {
                        $item->toggle = ( $lastitem->level > $item ) ?  ' data-toggle="dropdown"' : '';
                        }
                        $lastitem = $item;
                        }
                        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                        http://www.template-creator.com Outil de création de templates
                        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                        Commentaire


                        • #13
                          Re : countmenuchildren??? savoir si un élément menu a des enfants?

                          ouais, la solution a l'avantage certain de ne plus faire planter la page, par contre, il ne transmet plus le

                          $item->toggle; dans les variables :

                          $lastitem = '';
                          foreach ($items as & $item) {
                          if ($lastitem) {
                          $item->toggle = ( $lastitem->level > $item ) ? ' data-toggle="dropdown"' : '';
                          }
                          $lastitem = $item;
                          }


                          switch ($item->browserNav) :
                          default:
                          case 0:
                          ?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" <?php echo $title; ?> <?php echo $item->toggle; ?>><?php echo $linktype; ?></a><?php
                          break;
                          case 1:
                          // _blank
                          ?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" target="_blank" <?php echo $title; ?> <?php echo $item->toggle; ?>><?php echo $linktype; ?></a><?php
                          break;
                          case 2:
                          // window.open
                          ?><a <?php echo $class; ?>href="<?php echo $item->flink; ?>" onclick="window.open(this.href,'targetWindow','too lbar=no,location=no,status=no,menubar=no,scrollbar s=yes,resizable=yes');return false;" <?php echo $title; ?> <?php echo $item->toggle; ?>><?php echo $linktype; ?></a>
                          <?php
                          break;
                          endswitch;

                          Commentaire


                          • #14
                            Re : countmenuchildren??? savoir si un élément menu a des enfants?

                            remplaces
                            if ($lastitem) {
                            $item->toggle = ( $lastitem->level > $item ) ? ' data-toggle="dropdown"' : '';
                            }
                            par
                            if ($lastitem) {
                            $item->toggle = ( $lastitem->level > $item ) ? ' data-toggle="dropdown"' : '';
                            var_dump( $item->toggle );
                            }
                            pour vérifier que tu récupères le data voulu. Après il faut que tu débogues un peu, là en visu je ne peux pas faire beaucoup plus...
                            Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
                            http://www.template-creator.com Outil de création de templates
                            Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

                            Commentaire


                            • #15
                              Re : countmenuchildren??? savoir si un élément menu a des enfants?

                              SAlut Ced, merci pour tout ton temps, le soucis est que la boucle ne se fait pas à ce niveau de mon document, suite débuggage rapide, la boucle ne se faisait pas. suis donc retourné sur mes pas et ai reconfiguré ma connection et query php et cela donne ça et ça fonctionne. Merci encore.


                              //connect to db
                              $db =& JFactory::getDBO();
                              //query
                              $db = JFactory::getDbo();
                              $query = $db->getQuery(true);
                              $query->select('COUNT(*)');
                              $query->from($db->quoteName('h2r_menu'));
                              $query->where($db->quoteName('parent_id')." = ".$item->id." && published=1");

                              // Reset the query using our newly populated query object.
                              $db->setQuery($query);
                              $count = $db->loadResult();


                              if($count>0){
                              $toggle = ' data-toggle="dropdown"';
                              }else{
                              $toggle = '';
                              }

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X