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
                              1 sur 2 < >

                              C'est [Réglé] et on n'en parle plus ?

                              A quoi ça sert ?
                              La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                              Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                              Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                              Comment ajouter la mention [Réglé] à votre discussion ?
                              1 - Aller sur votre discussion et éditer votre premier message :


                              2 - Cliquer sur la liste déroulante Préfixe.

                              3 - Choisir le préfixe [Réglé].


                              4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                              2 sur 2 < >

                              Assistance au forum - Outil de publication d'infos de votre site

                              Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                              Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                              Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                              UTILISER À VOS PROPRES RISQUES :
                              L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                              Problèmes connus :
                              FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                              Installation :

                              1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                              Archive zip : https://github.com/AFUJ/FPA/zipball/master

                              2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                              3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                              4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                              5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                              6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                              et remplacer www. votresite .com par votre nom de domaine


                              Exemples:
                              Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/
                              Pour executer le script: http://www..com/fpa-fr.php

                              Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                              Télécharger le script fpa-fr.php dans: /public_html/cms/
                              Pour executer le script: http://www..com/cms/fpa-fr.php

                              En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                              Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                              Voir plus
                              Voir moins

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X