Affichage conditionnel d'un module annonce Adsense ?

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

  • Affichage conditionnel d'un module annonce Adsense ?

    Bonjour,

    Je suis en train de tester, via la 'Balance des annonces' proposée par Google, le fait de n'afficher qu'environ 60% des annonces potentielles pour ne laisser passer que celles qui rapportent le plus.

    Petit problème : quand l'annonce est vide, le mot 'annonce' (que j'ai écrit au début du code du module en guise de titre, comme le préconise Google) s'affiche et, ce qui est encore pire à mes yeux, l'espace normalement occupé par la pub s'affiche comme un espace vide.
    Ce qui rend les choses encore plus difficiles, c'est que le module n'est jamais tout à fait vide : le "titre" 'Annonce' est saisi entre des balises <p> dans le code html du module, ce n'est pas le titre du module (qui s'afficherait en grands caractères).

    Questions :
    a) existe-t-il un moyen pour obliger le mot 'Annonce' à s'afficher en blanc, voire à ne pas s'afficher, si le script de l'annonce ne renvoie aucun résultat ?
    b) existe-t-il un moyen de réduire l'espace occupé par un module de ce type (contenu personnalisé contenant le script) s'il ne contient aucune annonce ?

    Je ne suis pas sûre d'être très claire...
    Flo, Ariège

    Il n'y a que celui qui a honte d'apprendre qui a peur de demander

  • #2
    Bonjour,

    J'ai eu le problème des modules vides avec un de mes modules et j'ai expliqué comment ne pas les afficher:
    Si vous souhaitez ne pas afficher les modules vides, dont ce module, quand il n'a pas d'information à afficher, il faut aller dans le répertoire pour éditer :

    templates/<votre template>/html/modules.php

    Dans ce fichier, il faut ajouter le test suivant autour du pavé d'affichage du module:

    if (!empty ($module->content))

    Si vous regardez dans le fichier templates/beez3/html/modules.php, vous trouverez un exemple d'utilisation de cette commande (voir la ligne 39 dans la version 3.6 du template Beez3).
    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Bonjour Pascal,

      J'imagine que le texte entre <p> disant 'Annonce' va empêcher ce test de réussir.
      J'ai une idée en tête, mais je ne sais pas comment la mettre en oeuvre : supprimer ce texte, et faire s'afficher le titre du module à la place. Problème: les titres sont énormes (normal, ce sont des h2), donc il faudrait que j'arrive à comprendre comment faire pour que le titre d'un module en particulier s'affiche en <p>, voire même avec une classe css genre text-x-small. Pourriez-vous m’aider dans cette voie ?

      Merci !!

      EDIT: problème réglé, j'ai trouvé comment faire
      Dernière édition par FlodAriege à 18/12/2017, 12h03
      Flo, Ariège

      Il n'y a que celui qui a honte d'apprendre qui a peur de demander

      Commentaire


      • #4
        Pascal,

        Alors : j'ai réussi à régler le problème du texte 'annonce' en finissant par réussir à faire s'appliquer la classe text-size-small au titre (qui refusait obstinément : pour que ça fonctionne, il a fallu que je règle le style du module (dernier paramètre) sur html5). En gros si j'ai compris ce qui se passait, tant que c'était mon template qui gérait l'aspect, j'avais beau dire que que je voulais des balises <p> pour le titre et la classe text-size-small, le titre s'affichait toujours dans la police utilisée sur mon site pour les Hn (en plus petit que la normale, mais bien trop grand quand même).

        Par contre, impossible de localiser le fichier modules.php...
        Voici une capture d'écran de ce que je trouve dans le dossier templates/mon template :

        Une idée de l'endroit où je pourrais trouver le fichier à éditer ?

        Merci de ta patience

        EDIT 18/12/2017 11:37 : j'ai googlé mon petit souci, et il semblerait que dans mon template (joomlashine : JSN Boot), ils aient oublié le modules.php
        C'est en tout cas ce que je comprends de la lecture d'un échange sur leur forum.
        Le modérateur, de l'équipe de l'éditeur du template, a mis à disposition du forumeur un modules.php, ici : https://drive.google.com/file/d/0B0m...RmbDNuX3c/view

        Alors, j'ai commencé par jouer gros bras, et tenté de modifier ce php en m'inspirant du modules.php de beez3 que tu m'indiquais, mais ça a complètement foiré tout mon affichage... oups !
        J'ai ensuite tenté de mettre le modules.php mis à disposition par joomlashine, SANS le modifier : le site s'affiche apparemment normalement.
        C'est donc que j'ai mal inséré ton code.
        J'ai, dans ce php, une ligne qui dit :
        if ($module->content)

        je pensais qu'il suffisait de la remplacer par :
        if (!empty ($module->content)) { ?>
        ... et de trouver où poser la balise fermante :
        <?php }
        ... ce que j'ai visiblement mal fait.

        En y regardant de plus près, cette "1ère" ligne est suivie d'une autre :
        if ($module->content)
        {
        alors peut-être que le :
        ?>
        doit venir après ce :
        {
        ???
        (et du coup le :
        <?php
        se met juste avant le :
        }
        en fin de paragraphe ???

        [encore raté !!... oui, j'ai essayé de faire ce que je t'explique de façon très peu claire, j'en suis consciente...]

        [encore ratéééé !! j'ai cette fois essayé sans toucher aux {}, en remplaçant juste :
        if ($module->content)
        par :
        if (!empty ($module->content))
        ... mais ça reste sans aucun effet]

        Bon, comme tu vois, tu essaies d'apprendre à un singe à écrire en php, il faut donc m'expliquer les choses comme si j'avais disons 8 ans ?

        Je croise les doigts pour que tu puisses accéder au lien du modules.php (il faut être connecté au forum joomlashine pour lire le post, je ne sais pas si la pièce jointe est accessible sans connexion. Si tu n'y accèdes pas, tu me le dis et su tu veux bien je t'enverrai le fichier autrement (impossible de déposer un php ici, et si je l'enregistre en txt ça fait sauter tous les retours à la ligne... pour moi c'est encore plus du chinois)
        Dernière édition par FlodAriege à 18/12/2017, 12h37
        Flo, Ariège

        Il n'y a que celui qui a honte d'apprendre qui a peur de demander

        Commentaire


        • #5
          Bonjour,

          Le fichier modules.php est dans le répertoire html de ton template. Il permet de définir des comportements par défaut sur tes modules : https://docs.joomla.org/Applying_custom_module_chrome

          Pour trouver un exemple, tu peux regarder sur le template beez3.

          Au niveau du fichier index.php, on trouve des lignes, entre autres,
          Code:
          <jdoc:include type="modules" name="position-6" [B]style="beezDivision" [/B]headerLevel="3" />
          <jdoc:include type="modules" name="position-8" [B]style="beezDivision"[/B] headerLevel="3" />
          <jdoc:include type="modules" name="position-3" [B]style="beezDivision"[/B] headerLevel="3" />
          et on retrouve dans la fonction modChrome_beezDivision dans le fichier modules.php du répertoire /templates/beez3/html

          Cela affiche le module s'il contient quelque chose : ligne if (!empty ($module->content)) : et cela formatte aussi le module comme tu le souhaites.

          En espérant ne pas être technique,

          Pascal
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Je suis désolée, mais moi pas comprendre.
            Aparemment j'atteins mes limites ;-)
            comme en plus je n'ai PAS de modules.php dans templates/montemplate/html ca n'aide pas …
            bon ben … ça restera dans la catégorie des problèmes insolvables

            EDIT: non non non. je n'aime pas baisser les bras comme ça.
            Donc : si je lis le lien que tu m'as envoyé, je comprends que je peux très bien créer ce modules.php, correct ?

            Si oui, disons que tout ce que je veux qu'il fasse, ce php, c'est prendre la condition que tu proposais.
            Quel serait le texte minimum à saisir dans ce fichier pour qu'il fasse ça (vérifier si un module est vide), et rien d'autre.

            Après, je dois quand même t'avouer que je ne comprends pas du tout pourquoi tu fais référence, ensuite, au index.php.

            En attendant que tu reviennes vers moi avec tes lumières, je vais faire quelques expériences de plus.

            Je cherche par exemple dans une direction simplifiée : quelque chose qui dirait :
            si le module est vide, alors class="nodisplay"

            J'ai essayé avec :
            Code:
            <?php
            function modChrome_beezDivision($module, &$params, &$attribs)
            {
                $headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
                if (empty ($module->content)) : ?>
                    <div class="nodisplay">
                    </div>
                <?php endif;
            }
            ?>
            ... mais ça ne marche pas (au moins, ça ne fait pas planter le site, c'est déjà ça)

            Pardon d'être aussi zéro, et encore merci pour ta patience !
            Dernière édition par FlodAriege à 18/12/2017, 17h53
            Flo, Ariège

            Il n'y a que celui qui a honte d'apprendre qui a peur de demander

            Commentaire


            • #7
              up

              est-ce que même un petit :

              Code:
              <?php if (empty ($module->content)) : ?>
              <div class="nodisplay"></div>
              <?php endif; ?>
              (écrit correctement, je ne sais pas, moi, où est l'erreur),
              ne pourrait pas marcher ?
              Flo, Ariège

              Il n'y a que celui qui a honte d'apprendre qui a peur de demander

              Commentaire


              • #8
                Au niveau du template, avez-vous ajouter style=beez3Division au niveau de la position à "faire disparaître" ?

                Pascal
                If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                Commentaire


                • #9
                  Le principe est de montrer la div si elle contient quelque chose, je ne pense pas que le <div class="nodisplay"> fasse grand chose, si ce n'est cacher une div qui n'existe pas.

                  Dans le fichier modules.php de beez3, le code est :
                  Code PHP:
                  function modChrome_beezDivision($module, &$params, &$attribs)
                  {
                      $headerLevel = isset($attribs['headerLevel']) ? (int) $attribs['headerLevel'] : 3;
                      if (!empty ($module->content)) : ?>
                          <div class="moduletable<?php echo htmlspecialchars($params->get('moduleclass_sfx'), ENT_COMPAT'UTF-8'); ?>">
                          <?php if ($module->showtitle) : ?>
                              <h<?php echo $headerLevel?>><?php echo $module->title?></h<?php echo $headerLevel?>>
                          <?php endif; ?>
                          <?php echo $module->content?></div>
                      <?php endif;
                  }
                  Pascal
                  If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

                  Commentaire


                  • #10
                    Bonjour,

                    je crois que je commence à comprendre 2 ou 3 trucs.
                    d'abord, non, je n'avais pas réglé le style de mon module sur Beezdivision.
                    là je viens de le faire + j'ai remis le modules.php de beez3 dans le dossier html de mon templates et...
                    ça semble fonctionner... pour partie.
                    en effet, le titre du module ne s'affiche plus.

                    par contre, malheureusement, l'espace vide reste bien présent...

                    çà doit juste vouloir dire que je n'ai pas encore tout compris, et donc pas fait tout ce que j'aurais dû faire.
                    notamment, j'ai peut-être quelque chose à faire au niveau de l'index.php ??????

                    la position de mon module, c'est la position 'promo' : il faut peut-être que je le "déclare" quelque part ?

                    J'ai bien essayé de trouver un tuto sur tout ça pour éviter de revenir t'enquiquiner avec mes questions, mais ce satané php c'est du chinois pour moi...
                    Flo, Ariège

                    Il n'y a que celui qui a honte d'apprendre qui a peur de demander

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X