Joomladay francophone 2018 à Paris 18 et 19 mai

cohabitation div left et contenu dynamique

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

  • cohabitation div left et contenu dynamique

    Bonjour tout le monde, j'ai une tite question qui me prend trop trop la tête depuis quelque jours.

    Je cherche à crée un bloc left (module) et un bloc center (contenu). Se qui deviens casse tête c'est lorsque le div left est vide, je veux que le div center prend toute la largeur du content

    Je ne fait qu'un float left à mon bloc left avec une taille fixe 200px et center prend le reste soit (990-220)px

    Je tiens à dire que je ne veux pas faire un margin-left d'aumoins 200px à mon bloc center. En clair je veux un contenu dynamique suivant si le div left contient ou nous quelque chose.

    Voici l'exemple de code:

    <div id=content">
    <div id="left"><?php mosLoadModules( 'left', -2); ?></div>
    <div id="center"><?php mosMainBody(); ?></div>
    </div>
    Le hic c'est que j'ai beau chercher toutes les soluces, si par exemple le mainmenu est dans le div left et mon div centre contient le mainbody, il s'affiche parfaitement, par contre lorsque je clike sur "nous contacter", et bien le div center s'affiche en bas de div left.

    En clair je veux un div left tjrs à gauche (float left) qu'il contient ou non quelque chose, le div centre sera toujours à côté et prendra la taille soit:

    790px en présence de quelque chose dans le div left
    990px en cas de rien du tout dans le div left.

    Je pense qu'un teste de condition si présence ou non du <?php mosLoadModules( 'left', -2); ?> est nécessaire mais bon je suis un peu perdu.

    J'espère qu'une personne pourra m'aidez, j'ai beau chercher j'ai constater une seul personne qui la gérer mais uniquement avec des tableaux. Pourtant vous faite comment? vous laissez toujours le menu à gauche toujours présent?
    Dernière édition par gangstacop à 02/10/2007, 08h08

  • #2
    Personne n'as d'idée?

    Commentaire


    • #3
      J'ai résolu ce type de problème en suivant plusieurs posts :
      En créant une condition pour tester la présence d'un contenu dans left puis en l'associant avec 2 feuilles de styles contenant 2 tailles différentes pour mes div.

      Cordialement,
      Chabi01 - http://www.xlformation.com

      Commentaire


      • #4
        Pourtant je comprend pas pourquoi lorsque je code en dur sans joomla c'est ok mais quand je veux le gerer avec joomla c'est la m***e.

        En clair je dois tester la presence du menu left et s'il existe pas j'applique le css qu'il lui faut...

        if ( mosCountModules ('left') ) {
        ?>

        Mais si par exemple pour mon cas c'est uniquement la page d'accueil et un article accessible via le menu... autant crée un page en dur externe à joomla avec sont propre css dédier et le reste ben c'est le css de la template joomla.

        C'est cette solution que tu me parle? Pourrai tu please me montrer un exemple si tu arrive à trouver.
        Je vais rechercher partout sur le forum...

        Sinon j'ai trouver une idée c'est de faire 2 templates !
        1 avec , et 1 sans le bloc left... mais bon c'est de la bidouille

        En tout cas merci de ta réponse, et désolé du retard, j'ai pas eu de notification de réponse
        Dernière édition par gangstacop à 25/09/2007, 23h37

        Commentaire


        • #5
          Bonjour,
          Déjà pour les notifications de réponses, t'es pas le seul : il doit y avoir tellement de trafic ici que le moteur doit quelque fois zapper quelques notifs..
          Pour ta question, je vais te montrer une des solutions que utilisée sur un template de manière à ce que tu puisses l'adapter sur ton template.


          En partant du cas que tu donnes (j'adapte mon exemple !), tu as 2 zones qui doivent respectivement afficher la zone "left" et la zone "centre", centre étant juste un nom de div qui va contenir mainbody.

          Tu peux jongler facilement avec cela en n'oubliant pas ceci : tu ne peux pas avoir 2 appels à 2 endroits différents de zone de publication : mainbody ne doit apparaître qu'une seule fois, tout comme left si tu l'utilises.
          Ne confonds pas non plus le découpage et l'ID de tes div avec le nom des zones de publication : left dans mon exemple est l'ID d'un div mais également le nom de l'appel de la zone de publication "left".

          Je continue.
          Pout traiter le problème, on va donc avoir 2 cas de figures à traiter :
          Cas 1 : la zone de gauche contient du texte et fait 200 px de large, la zone de droite doit faire 790 px,
          Cas2 : la zone de gauche ne contient rien et ne doit pas apparaître, la zone centrale (ou de droite si je suis le cas n°1) fait 990 px.

          Tu vas jongler avec ce code :
          Code:
          <?php if (mosCountModules('left') <=0 ) { ?
          <div id="gauche1"
          Appel de module Left
          </div
          <div id="centre1"
          Appel de mainbody
          </div
          <?php } ?
          
          <?php if (mosCountModules('left') >0 ) { ?
          <div id="gauche2"
          Appel de module Left
          </div
          <div id="centre2"
          Appel de mainbody
          </div
          <?php } ?
          A partir de là, tu as 4 div à déclarer et paramétrer dans ton css :
          gauche1 et centre1
          gauche2 et centre2
          Tu peux même considérer que ton gauche1 n'a pas de raison d'être, mais je te l'ai quand même mis pour l'exemple.
          Théoriquement, dans ton css, tu vas donc avoir :
          gauche1 : largeur 50 px (c'est pour l'exemple !! Dans ton cas, gauche1 ne serait pas utilisé du tout)
          gauche2 : 200 px
          centre1 : 790px
          centre2 : 990 px

          Voilà !

          Cordialement,
          Chabi01 - http://www.xlformation.com

          Commentaire


          • #6
            Merci de ton infos, par contre si je comprend bien se que tu me dis, le cas1 c'est la gestion css (avec menu left): -> pourquoi centre1 790px??? Normalement c'est tout donc 990px

            Et le cas 2 donc pas de menu gauche -> pourquoi gauche2 de largeur 200px??

            Je viens de testé se que tu me propose et j'ai aucun affichage, j'ai même pas le header, footer, rien "page blanche". Il me semble sauf erreur de ma part, qu'il y a une erreur de syntaxe.

            J'ai chercher un peu partout sur la toile et j'ai trouver se liens qui en discute:
            http://www.compassdesigns.net/tutori...utorial_9.html

            Dernières chose si le test1 c'est sans menu et le test2 avec menu, dans se cas je ne peu pas faire une chose de se genre?
            els = document.getElementsByTagName('div')
            for( var x = 0; x < els.length; x++ ){
            if(els[x].length > 4){
            // si il y a du contenu
            }else{
            // si il n'y a pas de contenu
            }
            Dernière édition par gangstacop à 26/09/2007, 13h35

            Commentaire


            • #7
              Je pense que mosCountModules('left') doit être >= 1 ou <1 et non 0

              Ancien pseudo : Fleuve Blanc

              Commentaire


              • #8
                j'ai tapé sans vérifier la syntaxe du code, j'imagine que tu as fais les corrections d'ouverture et fermeture : en attendant, je t'écris le code exact et le colle ici plus tard (boulot à terminer d'abord)
                Cordialement,
                Chabi01 - http://www.xlformation.com

                Commentaire


                • #9
                  Essaye ce code là. (pas testé, mais cela devrait fonctionner)

                  Code:
                  <?php
                  if ( mosCountModules( 'left' ) ) {
                  
                  <div id="left2">
                  <?php mosLoadModules ( 'left' ); ?>
                  </div>
                  <div id="centre2">
                  <?php mosMainBody(); ?>
                  </div>
                  } else {
                  ?>
                  <div id="centre1">
                  <?php mosMainBody(); ?>
                  </div>
                  <?php
                  }
                  ?>
                  Tu as raison pour ta remarque sur le css : c'est centre1 qui fait 990px.

                  Teste et envoie le résultat,
                  Cordialement,
                  Chabi01 - http://www.xlformation.com

                  Commentaire


                  • #10
                    Bonsoir, enfin après avoir bien manger, il était temps,lol

                    J'avais déjà testé se que tu viens de me proposé mais y avais toujours un problème de syntaxe.

                    Par contre en essayant de cette façon c'est ****l.

                    <?php
                    if (mosCountModules('left'))
                    {
                    ?>
                    <div id="left1"><?php mosLoadModules ( 'left' ); ?></div>
                    <div id="centre1"><?php mosMainBody(); ?></div>
                    <?php
                    } else { ?>
                    <div id="centre"><?php mosMainBody(); ?></div>
                    <?php
                    }
                    ?>
                    Chabi01 si tu trouve une meilleurs optimisation, n'hésite pas... à me corriger.

                    Mais bon comme on dit la faim justifie les moyens,lol
                    En tout cas merci de ton intention ;-)
                    Dernière édition par gangstacop à 26/09/2007, 21h21

                    Commentaire


                    • #11
                      Bonsoir,
                      Le but est de trouver une soluce fonctionnelle : content que celle que tu as codée fonctionne !
                      J'irai quand même au bout de mon bout de code pour le tester et te renvoyer le code exact (c'est vrai, je te l'ai pondu comme ça sans le tester dans un index !!)
                      Cordialement,
                      Chabi01 - http://www.xlformation.com

                      Commentaire


                      • #12
                        Ok sa marche, n'oublie pas si tu trouve mieux, poste le ici sa pourrai que m'interresser

                        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
                        Travaille ...
                        X